[ 
https://issues.apache.org/jira/browse/PDFBOX-4094?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maruan Sahyoun updated PDFBOX-4094:
-----------------------------------
    Fix Version/s: 3.0.0 PDFBox
                   2.0.9

> 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