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

Reply via email to