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/12/13 20:05:55 UTC
svn commit: r1884399 - in /pdfbox/trunk/pdfbox/src:
main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
Author: msahyoun
Date: Sun Dec 13 20:05:55 2020
New Revision: 1884399
URL: http://svn.apache.org/viewvc?rev=1884399&view=rev
Log:
PDFBOX-3777, PDFBOX-4892: avoid ClassCastException
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java?rev=1884399&r1=1884398&r2=1884399&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java Sun Dec 13 20:05:55 2020
@@ -363,7 +363,7 @@ public final class PDAcroForm implements
*/
public List<PDField> getFields()
{
- COSArray cosFields = (COSArray) dictionary.getDictionaryObject(COSName.FIELDS);
+ COSArray cosFields = dictionary.getCOSArray(COSName.FIELDS);
if (cosFields == null)
{
return Collections.emptyList();
Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java?rev=1884399&r1=1884398&r2=1884399&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java Sun Dec 13 20:05:55 2020
@@ -16,6 +16,7 @@
*/
package org.apache.pdfbox.pdmodel.interactive.form;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -26,6 +27,7 @@ import static org.junit.jupiter.api.Asse
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
@@ -349,6 +351,25 @@ class PDAcroFormTest
}
}
+ /**
+ * PDFBOX-3777 Illegal Fields definition COSDictionary instead of Array
+ *
+ * @throws IOException
+ */
+ @Test
+ void testIllegalFieldsDefinition() throws IOException
+ {
+ String sourceUrl = "https://issues.apache.org/jira/secure/attachment/12866226/D1790B.PDF";
+
+ try (PDDocument testPdf = Loader.loadPDF(new URL(sourceUrl).openStream()))
+ {
+ PDDocumentCatalog catalog = testPdf.getDocumentCatalog();
+
+ assertDoesNotThrow(() -> catalog.getAcroForm(), "Getting the AcroForm shall not throw an exception");
+ }
+ }
+
+
@AfterEach
public void tearDown() throws IOException
{