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 2017/06/06 17:08:38 UTC

svn commit: r1797812 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible: PDFTemplateBuilder.java PDFTemplateCreator.java PDVisibleSigBuilder.java

Author: tilman
Date: Tue Jun  6 17:08:37 2017
New Revision: 1797812

URL: http://svn.apache.org/viewvc?rev=1797812&view=rev
Log:
PDFBOX-3817: create and attach background layer n0 form

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java?rev=1797812&r1=1797811&r2=1797812&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java Tue Jun  6 17:08:37 2017
@@ -221,6 +221,16 @@ public interface PDFTemplateBuilder
             PDImageXObject img) throws IOException;
 
     /**
+     * Creates the background layer form (n0).
+     *
+     * @param innerFormResource
+     * @param formatter
+     * @throws IOException
+     */
+    void createBackgroundLayerForm(PDResources innerFormResource, PDRectangle formatter)
+            throws IOException;
+
+    /**
      * Inject procSetArray
      * 
      * @param innerForm

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java?rev=1797812&r1=1797811&r2=1797812&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java Tue Jun  6 17:08:37 2017
@@ -144,6 +144,8 @@ public class PDFTemplateCreator
         PDResources imageFormResources = pdfStructure.getImageFormResources();
         pdfBuilder.createImageForm(imageFormResources, innerFormResource, imageFormStream, formatter,
                 transform, pdfStructure.getImage());
+        
+        pdfBuilder.createBackgroundLayerForm(innerFormResource, formatter);
        
         // now inject procSetArray
         pdfBuilder.injectProcSetArray(innerForm, page, innerFormResource, imageFormResources,

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java?rev=1797812&r1=1797811&r2=1797812&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java Tue Jun  6 17:08:37 2017
@@ -339,6 +339,19 @@ public class PDVisibleSigBuilder impleme
     }
 
     @Override
+    public void createBackgroundLayerForm(PDResources innerFormResource, PDRectangle formatter)
+             throws IOException
+    {
+        // create blank n0 background layer form
+        PDFormXObject n0Form = new PDFormXObject(new COSStream());
+        n0Form.setBBox(formatter);
+        n0Form.setResources(new PDResources());
+        n0Form.setFormType(1);
+        innerFormResource.put(COSName.getPDFName("n0"), n0Form);
+        LOG.info("Created background layer form");
+    }
+
+    @Override
     public void injectProcSetArray(PDFormXObject innerForm, PDPage page,
                                    PDResources innerFormResources,  PDResources imageFormResources,
                                    PDResources holderFormResources, COSArray procSet)
@@ -363,7 +376,7 @@ public class PDVisibleSigBuilder impleme
         // imageName + " Do Q\n" + builder.toString();
         String imgFormContent    = "q " + 100 + " 0 0 50 0 0 cm /" + imageName.getName() + " Do Q\n";
         String holderFormContent = "q 1 0 0 1 0 0 cm /" + innerFormName.getName() + " Do Q\n";
-        String innerFormContent  = "q 1 0 0 1 0 0 cm /" + imageFormName.getName() + " Do Q\n";
+        String innerFormContent  = "q 1 0 0 1 0 0 cm /n0 Do Q q 1 0 0 1 0 0 cm /" + imageFormName.getName() + " Do Q\n";
 
         appendRawCommands(pdfStructure.getHolderFormStream().createOutputStream(), holderFormContent);
         appendRawCommands(pdfStructure.getInnerFormStream().createOutputStream(), innerFormContent);