Maxime Veron created PDFBOX-4094: ------------------------------------ Summary: Add support for a flag disabling the rendering of PDF annotations in PDFRenderer Key: PDFBOX-4094 URL: https://issues.apache.org/jira/browse/PDFBOX-4094 Project: PDFBox Issue Type: Wish Components: Rendering Affects Versions: 2.0.8 Reporter: Maxime Veron
Regardless if annotations are supposed to be printed or not on the PDF, would it not be interesting to possess a flag allowing to choose if annotations should be printed on top of the document pages? Here is a diff of a very rough implementation of it : {code:java} diff --git a/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java b/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java --- a/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java +++ b/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java @@ -35,6 +35,9 @@ public class PDFRenderer protected final PDDocument document; // TODO keep rendering state such as caches here + // parameter used to know if the rendering should include annotations + private boolean renderAnnotations = true; + /** * Creates a new PDFRenderer. * @param document the document to render @@ -224,4 +227,14 @@ public class PDFRenderer { return new PageDrawer(parameters); } + + public void setRenderAnnotations(boolean render) + { + this.renderAnnotations = render; + } + + public boolean renderAnnotations() + { + return renderAnnotations; + } } diff --git a/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java b/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java --- a/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java +++ b/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java @@ -195,11 +195,13 @@ public class PageDrawer extends PDFGraphicsStreamEngine processPage(getPage()); - for (PDAnnotation annotation : getPage().getAnnotations()) - { - showAnnotation(annotation); + if (getRenderer().renderAnnotations()) + { + for (PDAnnotation annotation : getPage().getAnnotations()) + { + showAnnotation(annotation); + } } - graphics = null; } {code} And an exemple of a use case: {code:java} PDDocument doc = getPDDocument(); PDFRenderer pdfRenderer = new PDFRenderer(doc); pdfRenderer.setRenderAnnotations(false); pdfRenderer.renderImage(page); {code} By default, this would be keeping the same behavior as it used to (aka : print the annotations) but possess an opt-out feature. Best regards, M.Veron -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org