From f4538648ff3d03f6062954322c9282b17907f56d Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Wed, 14 Aug 2024 11:59:37 +0200 Subject: [PATCH] RED-9746: use quadtree for visible and overlapped elements --- .../InvisibleElementRemovalService.java | 7 +++---- .../commons/VisualEqualityTest.java | 20 +++++++++++++++---- .../rendering/GhostScriptOutputHandler.java | 0 .../commons/rendering/GhostScriptService.java | 0 .../commons/rendering/ImageFile.java | 0 .../commons/rendering/ImageSupervisor.java | 0 .../rendering/ImageSupervisorImpl.java | 0 .../commons/rendering/ListSplittingUtils.java | 0 8 files changed, 19 insertions(+), 8 deletions(-) rename src/{main => test}/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptOutputHandler.java (100%) rename src/{main => test}/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptService.java (100%) rename src/{main => test}/java/com/iqser/red/pdftronlogic/commons/rendering/ImageFile.java (100%) rename src/{main => test}/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisor.java (100%) rename src/{main => test}/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisorImpl.java (100%) rename src/{main => test}/java/com/iqser/red/pdftronlogic/commons/rendering/ListSplittingUtils.java (100%) diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java index 68f731d..6739287 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -158,7 +158,6 @@ public class InvisibleElementRemovalService { int pageIndex = 1; for (PageIterator iterator = pdfDoc.getPageIterator(); iterator.hasNext(); ) { - Page page = iterator.next(); visitedXObjIds.add(page.getSDFObj().getObjNum()); @@ -183,8 +182,8 @@ public class InvisibleElementRemovalService { removeOverlappedElements(page, writer, context); pageIndex++; } + log.info("Finished removing invisible Elements"); } - log.info("Finished removing invisible Elements"); } @@ -254,7 +253,7 @@ public class InvisibleElementRemovalService { if (inClippingPath) { ImageFeatures image = ElementFeatureFactory.buildImage(imageElement); if (nonTransparent) { - calculateOverlaps(context, image, writer); +// calculateOverlaps(context, image, writer); } context.visibleElements().add(image); } @@ -479,7 +478,7 @@ public class InvisibleElementRemovalService { Therefore, the position of a following Tj is affected by not writing the first Element. This is why, we write only the Tm command: */ - writer.writeGStateChanges(element); + writer.writeGStateChanges(element); } else { writer.writeElement(element); } diff --git a/src/test/java/com/iqser/red/pdftronlogic/commons/VisualEqualityTest.java b/src/test/java/com/iqser/red/pdftronlogic/commons/VisualEqualityTest.java index 18c6f89..1376e30 100644 --- a/src/test/java/com/iqser/red/pdftronlogic/commons/VisualEqualityTest.java +++ b/src/test/java/com/iqser/red/pdftronlogic/commons/VisualEqualityTest.java @@ -3,12 +3,10 @@ package com.iqser.red.pdftronlogic.commons; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.IOException; import java.nio.IntBuffer; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; -import java.util.Comparator; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -53,7 +51,20 @@ public class VisualEqualityTest { @SneakyThrows public void assertVisualEqualityOfProcessedFile() { - Path folder = Path.of("/home/kschuettler/Dokumente/TestFiles/syn-dm-testfiles/ITEM 19_A15149AC - Primary Skin Irritation Rabbit.pdf"); + Path file = Path.of("/home/kschuettler/Dokumente/TestFiles/syn-dm-testfiles/ITEM 23_A19022A - Dermal Absorption Human.pdf"); + Context context = new Context(stem, new HashMap<>()); + + runForFile(file, context); + + + assert context.failedFiles.isEmpty(); + } + + @Test + @SneakyThrows + public void assertVisualEqualityOfProcessedFolder() { + + Path folder = Path.of("/home/kschuettler/Dokumente/TestFiles/syn-dm-testfiles"); Context context = new Context(stem, new HashMap<>()); Files.walk(folder) @@ -86,8 +97,9 @@ public class VisualEqualityTest { try (var in = new FileInputStream(copiedOriginFile.toFile()); var out = new FileOutputStream(deltaFile.toFile())) { invisibleElementRemovalService.removeInvisibleElements(in, out, true); } - + System.out.println("removed invisible elements"); assertVisualEquality(originFile, processedFile, context); + System.out.println("finished visual equality check"); } diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptOutputHandler.java b/src/test/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptOutputHandler.java similarity index 100% rename from src/main/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptOutputHandler.java rename to src/test/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptOutputHandler.java diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptService.java b/src/test/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptService.java similarity index 100% rename from src/main/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptService.java rename to src/test/java/com/iqser/red/pdftronlogic/commons/rendering/GhostScriptService.java diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/rendering/ImageFile.java b/src/test/java/com/iqser/red/pdftronlogic/commons/rendering/ImageFile.java similarity index 100% rename from src/main/java/com/iqser/red/pdftronlogic/commons/rendering/ImageFile.java rename to src/test/java/com/iqser/red/pdftronlogic/commons/rendering/ImageFile.java diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisor.java b/src/test/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisor.java similarity index 100% rename from src/main/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisor.java rename to src/test/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisor.java diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisorImpl.java b/src/test/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisorImpl.java similarity index 100% rename from src/main/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisorImpl.java rename to src/test/java/com/iqser/red/pdftronlogic/commons/rendering/ImageSupervisorImpl.java diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/rendering/ListSplittingUtils.java b/src/test/java/com/iqser/red/pdftronlogic/commons/rendering/ListSplittingUtils.java similarity index 100% rename from src/main/java/com/iqser/red/pdftronlogic/commons/rendering/ListSplittingUtils.java rename to src/test/java/com/iqser/red/pdftronlogic/commons/rendering/ListSplittingUtils.java