[ 
https://issues.apache.org/jira/browse/PDFBOX-4094?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16364537#comment-16364537
 ] 

Maruan Sahyoun edited comment on PDFBOX-4094 at 2/14/18 6:16 PM:
-----------------------------------------------------------------

[~lehmi] are we fine with taking that patch without an ICLA? IMHO it's small 
enough.

[~mveron] thanks for the contribution. I'll apply it later tomorrow with some 
minor changes.
- the {{AnnotationsFilter}} shouldn't be part of the 
{{org.apache.pdfbox.filter}} package as this is related to io. I'll put it in 
the {{.interactive.annotation}} package
- I'll add the setter/getter to {{PageDrawer}} too as the line {{for 
(PDAnnotation annotation : 
getPage().getAnnotations(getRenderer().getAnnotationsFilter()))}} introduces a 
dependency on {{PageRenderer}}. Given the comment in the source code of 
{{PageDrawer}} we might be removing the {{PageRenderer}} at some point in time 
as a member in {{PageDrawer}}.

Again thank you very much for your help


was (Author: msahyoun):
[~lehmi] are we fine with taking that patch without an ICLA? IMHO it's small 
enough.

[~mveron] thanks for the contribution. I'll apply it later tomorrow with some 
minor changes.
- the {{AnnotationsFilter}} shouldn't be part of the 
{{org.apache.pdfbox.filter}} package as this is related to io. I'll put it in 
the {{.interactive.annotation}} package
- I'll add the setter/getter to {{PageDrawer}} too as the line {{for 
(PDAnnotation annotation : 
getPage().getAnnotations(getRenderer().getAnnotationsFilter()))}} introduces a 
dependency on {{PageRenderer}}. Given the comment in the source code of 
{{PageDrawer}} we might be removing the {{PageRenderer}} at some point in time 
as a member on {{PageDrawer}}.

Again thank you very much for your help

> 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
>            Assignee: Maruan Sahyoun
>            Priority: Minor
>             Fix For: 2.0.9, 3.0.0 PDFBox
>
>         Attachments: 
> 0001-PDFBOX-4094-comment-Modify-PDFRenderer-in-order-to-a.patch
>
>
> 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

Reply via email to