fix: honor custom watermark settings in PDF preview

This commit is contained in:
kl
2026-08-25 08:39:11 +08:00
parent c4288f7e59
commit a199b4a7fe
4 changed files with 160 additions and 39 deletions

View File

@@ -5,6 +5,7 @@ import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -35,6 +36,38 @@ public class PdfViewerCompatibilityTests {
assertTrue(pdfTemplate.contains("viewerUrl += \"&pagemode=none\";"));
}
@Test
void shouldForwardAndApplyAllPdfWatermarkSettings() throws IOException {
String pdfTemplate = readResource("/web/pdf.ftl");
String viewerScript = readResource("/static/pdfjs/web/viewer.mjs");
Map<String, String> watermarkParams = Map.ofEntries(
Map.entry("watermarktxt", "watermarkTxt"),
Map.entry("watermarkxspace", "watermarkXSpace"),
Map.entry("watermarkyspace", "watermarkYSpace"),
Map.entry("watermarkfont", "watermarkFont"),
Map.entry("watermarkfontsize", "watermarkFontsize"),
Map.entry("watermarkcolor", "watermarkColor"),
Map.entry("watermarkalpha", "watermarkAlpha"),
Map.entry("watermarkwidth", "watermarkWidth"),
Map.entry("watermarkheight", "watermarkHeight"),
Map.entry("watermarkangle", "watermarkAngle")
);
watermarkParams.forEach((queryParam, templateAttribute) -> {
assertTrue(pdfTemplate.contains(queryParam + ": '${" + templateAttribute + "?js_string}'"),
() -> "PDF template does not forward " + templateAttribute);
assertTrue(viewerScript.contains("\"" + queryParam + "\"")
|| viewerScript.contains("'" + queryParam + "'"),
() -> "PDF viewer does not consume " + queryParam);
});
assertTrue(viewerScript.contains("div.style.fontFamily = settings.font;"));
assertTrue(viewerScript.contains("div.style.fontSize = settings.fontsize;"));
assertTrue(viewerScript.contains("div.style.color = settings.color;"));
assertTrue(viewerScript.contains("div.style.opacity = settings.alpha;"));
assertTrue(viewerScript.contains("const xStep = settings.width + settings.x_space;"));
assertTrue(viewerScript.contains("const yStep = settings.height + settings.y_space;"));
}
@Test
void shouldPreferPdfForOfficePreviewByDefault() throws IOException {
String properties = readResource("/application.properties");