From 6255532f3fdfb6dcfdff1464270531d21616a066 Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Thu, 16 Mar 2023 16:40:46 +0100 Subject: [PATCH 01/13] RED-4875 - delete docker config --- bamboo-specs/src/main/java/buildjob/PlanSpec.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/bamboo-specs/src/main/java/buildjob/PlanSpec.java b/bamboo-specs/src/main/java/buildjob/PlanSpec.java index 9531f57..c30856e 100644 --- a/bamboo-specs/src/main/java/buildjob/PlanSpec.java +++ b/bamboo-specs/src/main/java/buildjob/PlanSpec.java @@ -4,7 +4,6 @@ import static com.atlassian.bamboo.specs.builders.task.TestParserTask.createJUni import com.atlassian.bamboo.specs.api.BambooSpec; import com.atlassian.bamboo.specs.api.builders.BambooKey; -import com.atlassian.bamboo.specs.api.builders.docker.DockerConfiguration; import com.atlassian.bamboo.specs.api.builders.permission.PermissionType; import com.atlassian.bamboo.specs.api.builders.permission.Permissions; import com.atlassian.bamboo.specs.api.builders.permission.PlanPermissions; @@ -107,13 +106,6 @@ public class PlanSpec { .description("${bamboo.g.gitTag}") .tagName("${bamboo.g.gitTag}") .defaultRepository()) - .dockerConfiguration( - new DockerConfiguration() - .image("nexus.iqser.com:5001/infra/maven:3.8.4-openjdk-17-slim") - .volume("/etc/maven/settings.xml", "/usr/share/maven/conf/settings.xml") - .dockerRunArguments("--net=host") - .volume("/var/run/docker.sock", "/var/run/docker.sock") - ) ) ) .linkedRepositories("RED / " + SERVICE_NAME) From 9766619eca770ccda8c4e6dff54fe6b26456fb43 Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Thu, 16 Mar 2023 17:07:09 +0100 Subject: [PATCH 02/13] RED-4875 - added Docker config again and deleted JUnit Resultparser --- bamboo-specs/src/main/java/buildjob/PlanSpec.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/bamboo-specs/src/main/java/buildjob/PlanSpec.java b/bamboo-specs/src/main/java/buildjob/PlanSpec.java index c30856e..e942bb8 100644 --- a/bamboo-specs/src/main/java/buildjob/PlanSpec.java +++ b/bamboo-specs/src/main/java/buildjob/PlanSpec.java @@ -88,10 +88,6 @@ public class PlanSpec { .location(Location.FILE) .fileFromPath("bamboo-specs/src/main/resources/scripts/build-java.sh") .argument(SERVICE_NAME), - createJUnitParserTask() - .description("Resultparser") - .resultDirectories("**/test-reports/*.xml, **/target/surefire-reports/*.xml, **/target/failsafe-reports/*.xml") - .enabled(true), new ScriptTask() .description("Sonar") .location(Location.FILE) @@ -106,6 +102,13 @@ public class PlanSpec { .description("${bamboo.g.gitTag}") .tagName("${bamboo.g.gitTag}") .defaultRepository()) + .dockerConfiguration( + new DockerConfiguration() + .image("nexus.iqser.com:5001/infra/maven:3.8.4-openjdk-17-slim") + .volume("/etc/maven/settings.xml", "/usr/share/maven/conf/settings.xml") + .dockerRunArguments("--net=host") + .volume("/var/run/docker.sock", "/var/run/docker.sock") + ) ) ) .linkedRepositories("RED / " + SERVICE_NAME) From 4dc4ddd63a0395ff26fa83af07e98bf784f2d492 Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Thu, 16 Mar 2023 17:09:24 +0100 Subject: [PATCH 03/13] RED-4875 - add import for docker-config --- bamboo-specs/src/main/java/buildjob/PlanSpec.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bamboo-specs/src/main/java/buildjob/PlanSpec.java b/bamboo-specs/src/main/java/buildjob/PlanSpec.java index e942bb8..a283ad8 100644 --- a/bamboo-specs/src/main/java/buildjob/PlanSpec.java +++ b/bamboo-specs/src/main/java/buildjob/PlanSpec.java @@ -1,7 +1,7 @@ package buildjob; import static com.atlassian.bamboo.specs.builders.task.TestParserTask.createJUnitParserTask; - +import com.atlassian.bamboo.specs.api.builders.docker.DockerConfiguration; import com.atlassian.bamboo.specs.api.BambooSpec; import com.atlassian.bamboo.specs.api.builders.BambooKey; import com.atlassian.bamboo.specs.api.builders.permission.PermissionType; From e00e5e53174c8390ff89df0a3bc456cce747af1b Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Fri, 17 Mar 2023 11:31:48 +0100 Subject: [PATCH 04/13] RED-4875 - refactored code so it can get called with both, pdfdoc and in/output-steams --- .../InvisibleElementRemovalService.java | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) 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 d0345ad..827c13d 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -12,8 +12,6 @@ import java.util.List; import java.util.Set; import java.util.TreeSet; -import org.springframework.stereotype.Service; - import com.google.common.primitives.Bytes; import com.google.common.primitives.Doubles; import com.pdftron.common.Matrix2D; @@ -38,33 +36,13 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @Slf4j -@Service public class InvisibleElementRemovalService { static public final double TOLERANCE = 1e-3; - /** - * Removes all hidden Text, Path and Image Elements from a PDF Document. - * handled cases: - * -Text which is transparent or is set to not render - * -Elements outside of clipping path - * -Elements that have been painted over by visible and filled Paths - * unhandled cases: - * -Elements covered by widely stroked path - * -Elements with the same color as background - * -Any Text set to clipping with its many interactions with other elements - * - * @param pdfFile The PDF file to process - * @param delta If this flag is set only the removed Elements will be written to the output file. - * The Elements are red if they are removed by clipping path, blue for transparency, and a green bounding box for overlap. - * @param out OutputStream to write the resulting file to - **/ @SneakyThrows - public void removeInvisibleElements(InputStream pdfFile, OutputStream out, boolean delta) { - - PDFDoc pdfDoc = new PDFDoc(pdfFile); - + private void execute(PDFDoc pdfDoc, boolean delta) { ElementWriter writer = new ElementWriter(); ElementReader reader = new ElementReader(); Set visitedXObjIds = new TreeSet<>(); @@ -90,21 +68,49 @@ public class InvisibleElementRemovalService { context.visitedXObjIds().clear(); removeOverlappedElements(page, writer, context); + writer.destroy(); + reader.destroy(); } + } + /** + * Removes all hidden Text, Path and Image Elements from a PDF Document. + * handled cases: + * -Text which is transparent or is set to not render + * -Elements outside of clipping path + * -Elements that have been painted over by visible and filled Paths + * unhandled cases: + * -Elements covered by widely stroked path + * -Elements with the same color as background + * -Any Text set to clipping with its many interactions with other elements + * + * @param pdfFile The PDF file to process + * @param delta If this flag is set only the removed Elements will be written to the output file. + * The Elements are red if they are removed by clipping path, blue for transparency, and a green bounding box for overlap. + * @param out OutputStream to write the resulting file to + **/ + @SneakyThrows + public void removeInvisibleElements(InputStream pdfFile, OutputStream out, boolean delta) { + + PDFDoc pdfDoc = new PDFDoc(pdfFile); + + execute(pdfDoc, delta); try { - pdfDoc.save(out, SDFDoc.SaveMode.LINEARIZED, null); + pdfDoc.save(out, SDFDoc.SaveMode.LINEARIZED, null); } catch (Exception e) { log.error("File could not be saved after invisible element removal"); throw new RuntimeException(e); } - writer.destroy(); - reader.destroy(); pdfDoc.close(); } + @SneakyThrows + public void removeInvisibleElements(PDFDoc pdfDoc, boolean delta) { + execute(pdfDoc, delta); + } + private void removeClippedElementsAndInvisibleTextAndRememberOverlappedElements(Page page, ElementWriter writer, InvisibleElementRemovalContext context) throws PDFNetException { From a3a2a9ac032631a91af02646a31b8b2916fe9530 Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Fri, 17 Mar 2023 17:12:38 +0100 Subject: [PATCH 05/13] RED-4875 - some refactoring and adding log --- .../InvisibleElementRemovalService.java | 72 ++++++++++--------- 1 file changed, 39 insertions(+), 33 deletions(-) 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 827c13d..2893cc1 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -41,37 +41,6 @@ public class InvisibleElementRemovalService { static public final double TOLERANCE = 1e-3; - @SneakyThrows - private void execute(PDFDoc pdfDoc, boolean delta) { - ElementWriter writer = new ElementWriter(); - ElementReader reader = new ElementReader(); - Set visitedXObjIds = new TreeSet<>(); - - for (PageIterator iterator = pdfDoc.getPageIterator(); iterator.hasNext(); ) { - - Page page = iterator.next(); - - visitedXObjIds.add(page.getSDFObj().getObjNum()); - - - InvisibleElementRemovalContext context = InvisibleElementRemovalContext.builder() - .reader(reader) - .clippingPathStack(new ClippingPathStack(page.getMediaBox())) - .delta(delta) - .overlappedElements(new ArrayList<>()) - .visibleElements(new ArrayList<>()) - .visitedXObjIds(visitedXObjIds) - .build(); - - removeClippedElementsAndInvisibleTextAndRememberOverlappedElements(page, writer, context); - - context.visitedXObjIds().clear(); - - removeOverlappedElements(page, writer, context); - writer.destroy(); - reader.destroy(); - } - } /** * Removes all hidden Text, Path and Image Elements from a PDF Document. * handled cases: @@ -105,10 +74,47 @@ public class InvisibleElementRemovalService { pdfDoc.close(); } + @SneakyThrows + public void removeInvisibleElements(PDFDoc pdfDoc) { + // As the use of the delta-file is only used in tests and therefore test already exists + // just call it with false + execute(pdfDoc, false); + } + @SneakyThrows - public void removeInvisibleElements(PDFDoc pdfDoc, boolean delta) { - execute(pdfDoc, delta); + private void execute(PDFDoc pdfDoc, boolean delta) { + log.info("Start removing invisible Elements"); + ElementWriter writer = new ElementWriter(); + ElementReader reader = new ElementReader(); + Set visitedXObjIds = new TreeSet<>(); + + for (PageIterator iterator = pdfDoc.getPageIterator(); iterator.hasNext(); ) { + + Page page = iterator.next(); + + visitedXObjIds.add(page.getSDFObj().getObjNum()); + + + InvisibleElementRemovalContext context = InvisibleElementRemovalContext.builder() + .reader(reader) + .clippingPathStack(new ClippingPathStack(page.getMediaBox())) + .delta(delta) + .overlappedElements(new ArrayList<>()) + .visibleElements(new ArrayList<>()) + .visitedXObjIds(visitedXObjIds) + .build(); + + removeClippedElementsAndInvisibleTextAndRememberOverlappedElements(page, writer, context); + + context.visitedXObjIds().clear(); + + removeOverlappedElements(page, writer, context); + writer.destroy(); + reader.destroy(); + + log.info("Finished removing invisible Elements"); + } } private void removeClippedElementsAndInvisibleTextAndRememberOverlappedElements(Page page, From 8a35a1bd901c6dfe7f747d0cffcb8060a2d02e1a Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Mon, 20 Mar 2023 08:21:22 +0100 Subject: [PATCH 06/13] RED-4875 - move PdfTextExtraction.java from ocr-service to here --- .../commons/PdfTextExtraction.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java b/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java new file mode 100644 index 0000000..d489edf --- /dev/null +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java @@ -0,0 +1,35 @@ +package com.iqser.red.pdftronlogic.commons; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import com.pdftron.common.PDFNetException; +import com.pdftron.pdf.PDFDoc; +import com.pdftron.pdf.Page; +import com.pdftron.pdf.PageIterator; +import com.pdftron.pdf.TextExtractor; + + +public class PdfTextExtraction { + + public static String extractAllTextFromDocument(InputStream fileStream) throws IOException, PDFNetException { + + PDFDoc pdfDoc = new PDFDoc(fileStream); + TextExtractor extractor = new TextExtractor(); + List texts = new ArrayList<>(); + + PageIterator iterator = pdfDoc.getPageIterator(); + while (iterator.hasNext()) { + Page page = iterator.next(); + extractor.begin(page); + texts.add(extractor.getAsText()); + } + + extractor.destroy(); + pdfDoc.close(); + return String.join("\n", texts); + } + +} From e8b89f66c64973c813ba999504a4357406873a61 Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Mon, 20 Mar 2023 08:56:23 +0100 Subject: [PATCH 07/13] RED-4875 - add possibility to call if with pdfdoc-object --- .../red/pdftronlogic/commons/PdfTextExtraction.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java b/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java index d489edf..06d0ea4 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java @@ -14,9 +14,7 @@ import com.pdftron.pdf.TextExtractor; public class PdfTextExtraction { - public static String extractAllTextFromDocument(InputStream fileStream) throws IOException, PDFNetException { - - PDFDoc pdfDoc = new PDFDoc(fileStream); + private static String execute(PDFDoc pdfDoc) throws IOException, PDFNetException{ TextExtractor extractor = new TextExtractor(); List texts = new ArrayList<>(); @@ -32,4 +30,13 @@ public class PdfTextExtraction { return String.join("\n", texts); } + public static String extractAllTextFromDocument(InputStream fileStream) throws IOException, PDFNetException { + PDFDoc pdfDoc = new PDFDoc(fileStream); + return execute(pdfDoc); + } + + public static String extractAllTextFromDocument(PDFDoc pdfDoc) throws IOException, PDFNetException { + return execute(pdfDoc); + } + } From 392db3b33919c1e635e6b6ff4207d7367120ec8c Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Mon, 20 Mar 2023 11:11:09 +0100 Subject: [PATCH 08/13] RED-4875 - move destroy of pdftron-elements out of loop --- .../commons/InvisibleElementRemovalService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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 2893cc1..edb9b29 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -110,11 +110,12 @@ public class InvisibleElementRemovalService { context.visitedXObjIds().clear(); removeOverlappedElements(page, writer, context); - writer.destroy(); - reader.destroy(); - log.info("Finished removing invisible Elements"); } + writer.destroy(); + reader.destroy(); + + log.info("Finished removing invisible Elements"); } private void removeClippedElementsAndInvisibleTextAndRememberOverlappedElements(Page page, From 41832f9897f8ef7221b0a6a00dc6c4588805bdc5 Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Mon, 20 Mar 2023 15:04:37 +0100 Subject: [PATCH 09/13] RED-4875 - first implementation of hasInvisibleText() --- .../InvisibleElementRemovalService.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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 edb9b29..8851e0d 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -118,6 +118,8 @@ public class InvisibleElementRemovalService { log.info("Finished removing invisible Elements"); } + + private void removeClippedElementsAndInvisibleTextAndRememberOverlappedElements(Page page, ElementWriter writer, InvisibleElementRemovalContext context) throws PDFNetException { @@ -150,7 +152,23 @@ public class InvisibleElementRemovalService { } } - + @SneakyThrows + public boolean hasInvisibleText(PDFDoc pdfDoc) { + ElementReader reader = new ElementReader(); + for (PageIterator iterator = pdfDoc.getPageIterator(); iterator.hasNext(); ) { + Page page = iterator.next(); + for (Element element = reader.next(); element != null; element = reader.next()) { + if (element.getType() == Element.e_text) { + GState gState = element.getGState(); + boolean isTextVisible = isTextRenderedVisibly(gState); + if (!isTextVisible) { + return true; + } + } + } + } + return false; + } private void processImages(Element imageElement, ElementWriter writer, InvisibleElementRemovalContext context) throws PDFNetException { Rect rect = imageElement.getBBox(); From f971bd0ba0b2539f56b9455c58a89663b3918be1 Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Mon, 20 Mar 2023 16:30:37 +0100 Subject: [PATCH 10/13] RED-4875 - remove method and add delta do call with pdfdpc --- .../InvisibleElementRemovalService.java | 28 +++---------------- 1 file changed, 4 insertions(+), 24 deletions(-) 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 8851e0d..c96660f 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -65,7 +65,7 @@ public class InvisibleElementRemovalService { execute(pdfDoc, delta); try { - pdfDoc.save(out, SDFDoc.SaveMode.LINEARIZED, null); + pdfDoc.save(out, SDFDoc.SaveMode.LINEARIZED, null); } catch (Exception e) { log.error("File could not be saved after invisible element removal"); throw new RuntimeException(e); @@ -75,10 +75,8 @@ public class InvisibleElementRemovalService { } @SneakyThrows - public void removeInvisibleElements(PDFDoc pdfDoc) { - // As the use of the delta-file is only used in tests and therefore test already exists - // just call it with false - execute(pdfDoc, false); + public void removeInvisibleElements(PDFDoc pdfDoc, boolean delta) { + execute(pdfDoc, delta); } @@ -118,8 +116,6 @@ public class InvisibleElementRemovalService { log.info("Finished removing invisible Elements"); } - - private void removeClippedElementsAndInvisibleTextAndRememberOverlappedElements(Page page, ElementWriter writer, InvisibleElementRemovalContext context) throws PDFNetException { @@ -152,23 +148,7 @@ public class InvisibleElementRemovalService { } } - @SneakyThrows - public boolean hasInvisibleText(PDFDoc pdfDoc) { - ElementReader reader = new ElementReader(); - for (PageIterator iterator = pdfDoc.getPageIterator(); iterator.hasNext(); ) { - Page page = iterator.next(); - for (Element element = reader.next(); element != null; element = reader.next()) { - if (element.getType() == Element.e_text) { - GState gState = element.getGState(); - boolean isTextVisible = isTextRenderedVisibly(gState); - if (!isTextVisible) { - return true; - } - } - } - } - return false; - } + private void processImages(Element imageElement, ElementWriter writer, InvisibleElementRemovalContext context) throws PDFNetException { Rect rect = imageElement.getBBox(); From 3e586722f2420bf03b15d372ec9746337f3fda0a Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Tue, 21 Mar 2023 11:16:57 +0100 Subject: [PATCH 11/13] RED-4875 - remove spring boot in pom and add a javadoc-link --- pom.xml | 17 ----------------- .../commons/InvisibleElementRemovalService.java | 8 +++++++- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index 73c1ece..b8c0784 100644 --- a/pom.xml +++ b/pom.xml @@ -31,23 +31,6 @@ guava - - org.springframework.boot - spring-boot-starter - provided - - - - org.springframework.boot - spring-boot-starter-web - provided - - - - org.springframework.boot - spring-boot-configuration-processor - provided - com.pdftron PDFNet 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 c96660f..183b9f3 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -74,14 +74,20 @@ public class InvisibleElementRemovalService { pdfDoc.close(); } + + /** + * This method is similar to {@link #removeInvisibleElements(InputStream, OutputStream, boolean)}, just with a PDFDoc + */ @SneakyThrows public void removeInvisibleElements(PDFDoc pdfDoc, boolean delta) { + execute(pdfDoc, delta); } @SneakyThrows private void execute(PDFDoc pdfDoc, boolean delta) { + log.info("Start removing invisible Elements"); ElementWriter writer = new ElementWriter(); ElementReader reader = new ElementReader(); @@ -93,7 +99,6 @@ public class InvisibleElementRemovalService { visitedXObjIds.add(page.getSDFObj().getObjNum()); - InvisibleElementRemovalContext context = InvisibleElementRemovalContext.builder() .reader(reader) .clippingPathStack(new ClippingPathStack(page.getMediaBox())) @@ -116,6 +121,7 @@ public class InvisibleElementRemovalService { log.info("Finished removing invisible Elements"); } + private void removeClippedElementsAndInvisibleTextAndRememberOverlappedElements(Page page, ElementWriter writer, InvisibleElementRemovalContext context) throws PDFNetException { From c6ed6a2775edb78d4b33f8497180a5be4e215b7c Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Tue, 21 Mar 2023 11:24:52 +0100 Subject: [PATCH 12/13] RED-4875 - added '.' in javadoc --- .../pdftronlogic/commons/InvisibleElementRemovalService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 183b9f3..e62040e 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -76,7 +76,7 @@ public class InvisibleElementRemovalService { /** - * This method is similar to {@link #removeInvisibleElements(InputStream, OutputStream, boolean)}, just with a PDFDoc + * This method is similar to {@link #removeInvisibleElements(InputStream, OutputStream, boolean)}, just with a PDFDoc. */ @SneakyThrows public void removeInvisibleElements(PDFDoc pdfDoc, boolean delta) { From 46f3b74cb560e34bf6ec08d1ed430b193125e0ad Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Tue, 21 Mar 2023 14:18:14 +0100 Subject: [PATCH 13/13] RED-4875 - close pdfdoc in finally and add UtilityClass annotation for class PdfTextExtraction --- .../pdftronlogic/commons/InvisibleElementRemovalService.java | 3 ++- .../com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) 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 e62040e..872b387 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/InvisibleElementRemovalService.java @@ -69,9 +69,10 @@ public class InvisibleElementRemovalService { } catch (Exception e) { log.error("File could not be saved after invisible element removal"); throw new RuntimeException(e); + } finally { + pdfDoc.close(); } - pdfDoc.close(); } diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java b/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java index 06d0ea4..bb6a762 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/PdfTextExtraction.java @@ -11,7 +11,9 @@ import com.pdftron.pdf.Page; import com.pdftron.pdf.PageIterator; import com.pdftron.pdf.TextExtractor; +import lombok.experimental.UtilityClass; +@UtilityClass public class PdfTextExtraction { private static String execute(PDFDoc pdfDoc) throws IOException, PDFNetException{