Author: msahyoun
Date: Thu May 28 09:19:47 2026
New Revision: 1934719

Log:
PDFBOX-6207: handle empty string in /Opt entry

Modified:
   pdfbox/branches/2.0/pdfbox/pom.xml
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java
   
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestCheckBox.java

Modified: pdfbox/branches/2.0/pdfbox/pom.xml
==============================================================================
--- pdfbox/branches/2.0/pdfbox/pom.xml  Thu May 28 08:53:34 2026        
(r1934718)
+++ pdfbox/branches/2.0/pdfbox/pom.xml  Thu May 28 09:19:47 2026        
(r1934719)
@@ -883,6 +883,19 @@
                             
<sha512>83bc557e6f7d3e98de6e81168b2e2fb3def5025cc5fab1ddb3ef658505351c615253587f09b93503bb73a6225f3d3898be894e9d05dba8d464f4dd9c54514bc3</sha512>
                         </configuration>
                     </execution>
+                    <execution>
+                        <id>PDFBOX-6207</id>
+                        <phase>generate-test-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            
<url>https://issues.apache.org/jira/secure/attachment/13082507/form_with_checkbox.pdf</url>
+                            
<outputDirectory>${project.build.directory}/pdfs</outputDirectory>
+                            <outputFileName>PDFBOX-6207.pdf</outputFileName>
+                            
<sha512>3c8020c1114e2267fdc4e525eed04fd452c75eab4fb0c5d60340983d91af52aca330383a4430934de82e73ddfcd17eec55f1426bd0756b7d11510fadf1043cf9</sha512>
+                        </configuration>
+                    </execution>
                 </executions>
             </plugin>
         </plugins>

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java
   Thu May 28 08:53:34 2026        (r1934718)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java
   Thu May 28 09:19:47 2026        (r1934719)
@@ -290,8 +290,13 @@ public abstract class PDButton extends P
         
         if (value instanceof COSString)
         {
+            String stringValue = ((COSString)value).getString();
+            if (stringValue.isEmpty())
+            {
+                return Collections.emptyList();
+            }
             List<String> array = new ArrayList<String>();
-            array.add(((COSString) value).getString());
+            array.add(stringValue);
             return array;
         }
         else if (value instanceof COSArray)

Modified: 
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestCheckBox.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestCheckBox.java
       Thu May 28 08:53:34 2026        (r1934718)
+++ 
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestCheckBox.java
       Thu May 28 09:19:47 2026        (r1934719)
@@ -16,6 +16,7 @@
  */
 package org.apache.pdfbox.pdmodel.interactive.form;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -160,4 +161,33 @@ public class TestCheckBox extends TestCa
         assertEquals("Off", checkBox.getValue());
         doc.close();
     }
+
+    /**
+     * PDFBOX-6207 Invalid /Opt entry. String instead of array of strings.
+     * 
+     * @throws IOException
+     */
+    public void testPDFBox6207() throws IOException
+    {
+        File pdfFile = new File("target/pdfs/PDFBOX-6207.pdf");
+        
+        if (!pdfFile.exists())
+        {
+            return;  // Skip test if PDF not available
+        }
+
+        PDDocument testPdf = PDDocument.load(pdfFile);
+        PDAcroForm acroForm = testPdf.getDocumentCatalog().getAcroForm();
+        PDCheckBox field = (PDCheckBox) 
acroForm.getField("Check_Info_Post_andere");
+
+        try
+        {
+            field.setValue("Yes");
+        }
+        catch (Exception e)
+        {
+            fail("Setting a valid value of a checkbox with an invalid /Opt 
entry should not throw an exception");
+        }
+        testPdf.close();
+    }
 }
\ No newline at end of file

Reply via email to