[
https://issues.apache.org/jira/browse/PDFBOX-4094?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16360472#comment-16360472
]
Maruan Sahyoun edited comment on PDFBOX-4094 at 2/12/18 9:17 AM:
-----------------------------------------------------------------
Reader/Acrobat allow to exclude annotations from printing. That does not
include form fields. We'd need to test what is/is not included/excluded. IMHO
it doesn't makes sense to excluded everything as urls etc. might be gone.
was (Author: msahyoun):
Reader/Acrobat allow to exclude annotations from printing. That does not
include form fields.
> 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
> Priority: Minor
>
> 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: [email protected]
For additional commands, e-mail: [email protected]