You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2015/07/20 18:43:19 UTC

svn commit: r1691978 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel: PDDocument.java interactive/form/PDSignatureField.java

Author: tilman
Date: Mon Jul 20 16:43:18 2015
New Revision: 1691978

URL: http://svn.apache.org/r1691978
Log:
PDFBOX-2892: respect PDF/A requirements when using invisible signature annotation, as suggested by Petras

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1691978&r1=1691977&r2=1691978&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Mon Jul 20 16:43:18 2015
@@ -292,16 +292,14 @@ public class PDDocument implements Close
         if (signatureField == null)
         {
             signatureField = new PDSignatureField(acroForm);
-            // set visibility flags
-            if (options.getVisualSignature() == null)
-            {
-                signatureField.getWidgets().get(0).setNoView(true);
-            }
             // append the signature object
             signatureField.setValue(sigObject);
             // backward linking
             signatureField.getWidgets().get(0).setPage(page);
         }
+        // to conform PDF/A-1 requirement:
+        // The /F key's Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0
+        signatureField.getWidgets().get(0).setPrinted(true);
 
         // Set the AcroForm Fields
         List<PDField> acroFormFields = acroForm.getFields();

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java?rev=1691978&r1=1691977&r2=1691978&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java Mon Jul 20 16:43:18 2015
@@ -207,7 +207,7 @@ public class PDSignatureField extends PD
         if (widget != null)
         {
             // check if the signature is visible
-            if (widget.getRectangle() != null &&
+            if (widget.getRectangle() == null ||
                 widget.getRectangle().getHeight() == 0 && widget.getRectangle().getWidth() == 0 ||
                 widget.isNoView() ||  widget.isHidden())
             {