You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2020/10/31 16:50:53 UTC
svn commit: r1883024 -
/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormFromAnnotsTest.java
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();
+
+ }
+ }
}