Details
-
Wish
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.0.8
-
None
Description
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 :
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; }
And an exemple of a use case:
PDDocument doc = getPDDocument(); PDFRenderer pdfRenderer = new PDFRenderer(doc); pdfRenderer.setRenderAnnotations(false); pdfRenderer.renderImage(page);
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