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