From f39ed2e5860a87edef760d73a26f914090ca0be5 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Fri, 11 Aug 2023 15:10:40 +0200 Subject: [PATCH] hotfix: Fixed npe for inline image where getXObject() returns null --- .../red/pdftronlogic/commons/WatermarkRemovalService.java | 6 +++++- .../pdftronlogic/commons/WatermarkRemovalServiceTest.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iqser/red/pdftronlogic/commons/WatermarkRemovalService.java b/src/main/java/com/iqser/red/pdftronlogic/commons/WatermarkRemovalService.java index 6521ad4..bd40494 100644 --- a/src/main/java/com/iqser/red/pdftronlogic/commons/WatermarkRemovalService.java +++ b/src/main/java/com/iqser/red/pdftronlogic/commons/WatermarkRemovalService.java @@ -118,6 +118,9 @@ public class WatermarkRemovalService { if (element.getType() == Element.e_form) { processXObject(element, visitedXObjIds, elementFeaturesLinkedList, formObjectsOccuringMoreThanOnceOnAPage, minAreaCoveringPage); } else if (element.getType() == Element.e_image || element.getType() == Element.e_inline_image) { + if (element.getXObject() == null) { + return; + } processImages(element, elementFeaturesLinkedList); } } @@ -220,9 +223,10 @@ public class WatermarkRemovalService { switch (element.getType()) { case Element.e_image, Element.e_inline_image -> { if (element.getBBox() == null) { + writer.writeElement(element); continue; } - if (element.getBBox().getHeight() * element.getBBox().getWidth() < minAreaCoveringFromPage) { + if (element.getBBox().getHeight() * element.getBBox().getWidth() < minAreaCoveringFromPage || element.getXObject() == null) { writer.writeElement(element); continue; } diff --git a/src/test/java/com/iqser/red/pdftronlogic/commons/WatermarkRemovalServiceTest.java b/src/test/java/com/iqser/red/pdftronlogic/commons/WatermarkRemovalServiceTest.java index fc023ad..7f54c9c 100644 --- a/src/test/java/com/iqser/red/pdftronlogic/commons/WatermarkRemovalServiceTest.java +++ b/src/test/java/com/iqser/red/pdftronlogic/commons/WatermarkRemovalServiceTest.java @@ -23,7 +23,7 @@ class WatermarkRemovalServiceTest { WatermarkRemovalService watermarkRemovalService = new WatermarkRemovalService(); - String filename = "files/PO_82_277_H_2013 (1).pdf"; + String filename = "files/18_TiltPlus_IrritacaoOcularAguda.pdf"; String tmpFilename = createTmpFileName(filename, "WATERMARK_REMOVAL"); try (var in = this.getClass().getClassLoader().getResourceAsStream(filename); var out = new FileOutputStream(tmpFilename)) {