Author: msahyoun
Date: Sat Oct 31 16:50:52 2020
New Revision: 1883024

URL: http://svn.apache.org/viewvc?rev=1883024&view=rev
Log:
PDFBOX-3891: add currently failing test to ensure rebuild matches Acrobat 
result; test disabled

Modified:
    
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormFromAnnotsTest.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormFromAnnotsTest.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormFromAnnotsTest.java?rev=1883024&r1=1883023&r2=1883024&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormFromAnnotsTest.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormFromAnnotsTest.java
 Sat Oct 31 16:50:52 2020
@@ -27,7 +27,9 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
+import org.apache.pdfbox.pdmodel.fixup.AbstractFixup;
 import org.apache.pdfbox.pdmodel.fixup.AcroFormDefaultFixup;
+import 
org.apache.pdfbox.pdmodel.fixup.processor.AcroFormOrphanWidgetsProcessor;
 import org.junit.Test;
 
 /**
@@ -159,7 +161,55 @@ public class PDAcroFormFromAnnotsTest
         }
     }
 
+    /**
+     * PDFBOX-3891 AcroForm with empty fields entry
+     * 
+     * Special fixup to create fields
+     * 
+     * @throws IOException
+     */
+    // @Test
+    public void testFromAnnots3891CreateFields() throws IOException
+    {
 
+        String sourceUrl = 
"https://issues.apache.org/jira/secure/attachment/12881055/merge-test.pdf";;
+        String acrobatSourceUrl = 
"https://issues.apache.org/jira/secure/attachment/13014447/merge-test-na-acrobat.pdf";;
 
+        int numFormFieldsByAcrobat = 0;
 
+        try (PDDocument testPdf = Loader.loadPDF(new 
URL(acrobatSourceUrl).openStream()))
+        {
+            PDDocumentCatalog catalog = testPdf.getDocumentCatalog();
+            PDAcroForm acroForm = catalog.getAcroForm(null);
+            numFormFieldsByAcrobat = acroForm.getFields().size();
+        }
+
+        try (PDDocument testPdf = Loader.loadPDF(new 
URL(sourceUrl).openStream()))
+        {
+            PDDocumentCatalog catalog = testPdf.getDocumentCatalog();
+            // need to do a low level cos access as the PDModel access will 
build the AcroForm
+            COSDictionary cosAcroForm = (COSDictionary) 
catalog.getCOSObject().getDictionaryObject(COSName.ACRO_FORM);
+            COSArray cosFields = (COSArray) 
cosAcroForm.getDictionaryObject(COSName.FIELDS);
+            assertEquals("Initially there shall be 0 fields", 0, 
cosFields.size());
+            PDAcroForm acroForm = catalog.getAcroForm(new 
CreateFieldsFixup(testPdf));
+            assertEquals("After rebuild there shall be " + 
numFormFieldsByAcrobat + " fields", numFormFieldsByAcrobat, 
acroForm.getFields().size());
+        }
+    }
+
+    /*
+     * Create fields from widget annotations
+     */
+    class CreateFieldsFixup extends AbstractFixup
+    {
+        CreateFieldsFixup(PDDocument document)
+        { 
+            super(document); 
+        }
+
+        @Override
+        public void apply() {
+            new AcroFormOrphanWidgetsProcessor(document).process();
+
+        }        
+    }
 }


Reply via email to