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 2023/12/15 12:32:58 UTC

svn commit: r1914685 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java

Author: tilman
Date: Fri Dec 15 12:32:58 2023
New Revision: 1914685

URL: http://svn.apache.org/viewvc?rev=1914685&view=rev
Log:
PDFBOX-5739: add test for 3347, based on SO question 36964496

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

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=1914685&r1=1914684&r2=1914685&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 Fri Dec 15 12:32:58 2023
@@ -29,6 +29,8 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
 
 import org.apache.pdfbox.Loader;
 import org.apache.pdfbox.cos.COSDictionary;
@@ -44,6 +46,8 @@ import org.apache.pdfbox.pdmodel.font.PD
 import org.apache.pdfbox.pdmodel.font.Standard14Fonts.FontName;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceEntry;
 import org.apache.pdfbox.rendering.TestPDFToImage;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
@@ -367,6 +371,41 @@ class PDAcroFormTest
         }
     }
 
+    /**
+     * Test for names with invalid UTF-8.
+     * 
+     * @throws IOException
+     * @throws URISyntaxException 
+     */
+    @Test
+    void testPDFBox3347() throws IOException, URISyntaxException
+    {
+        String sourceUrl = "https://issues.apache.org/jira/secure/attachment/12968302/KYF%20211%20Best%C3%A4llning%202014.pdf";
+
+        try (PDDocument doc = Loader.loadPDF(
+                RandomAccessReadBuffer.createBufferFromStream(new URI(sourceUrl).toURL().openStream())))
+        {
+            PDField field = doc.getDocumentCatalog().getAcroForm().getField("Krematorier");
+            List<PDAnnotationWidget> widgets = field.getWidgets();
+            Set<String> set = new TreeSet<>();
+            for (PDAnnotationWidget annot : widgets)
+            {
+                PDAppearanceDictionary ap = annot.getAppearance();
+                PDAppearanceEntry normalAppearance = ap.getNormalAppearance();
+                Set<COSName> nameSet = normalAppearance.getSubDictionary().keySet();
+                assertTrue(nameSet.contains(COSName.Off));
+                for (COSName name : nameSet)
+                {
+                    if (!name.equals(COSName.Off))
+                    {
+                        set.add(name.getName());
+                    }
+                }
+            }
+            assertEquals("[Nynäshamn, Råcksta, Silverdal, Skogskrem, St Botvid, Storkällan]",
+                    set.toString());
+        }
+    }
 
     @AfterEach
     public void tearDown() throws IOException