From 41832f9897f8ef7221b0a6a00dc6c4588805bdc5 Mon Sep 17 00:00:00 2001 From: Thomas Beyer Date: Mon, 20 Mar 2023 15:04:37 +0100 Subject: [PATCH] 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();