diff --git a/pdfbox/pom.xml b/pdfbox/pom.xml
index 528f9d01966..fd27708e47e 100644
--- a/pdfbox/pom.xml
+++ b/pdfbox/pom.xml
@@ -790,6 +790,19 @@
995b25abc41bcb3e89f93d1495d4e178010c7dfbbdd55fed71de395d3798a83575b619c333a22386d441152f821debffd01c26494bef86cb35ef0d04e0198a3b
+
+ PDFBOX-5927
+ generate-test-resources
+
+ wget
+
+
+ https://issues.apache.org/jira/secure/attachment/13073586/SO79293670.pdf
+ ${project.build.directory}/pdfs
+ PDFBOX-5927.pdf
+ 73cabf224a56cd7256262245d5edb79729401a7485e420a0d66c931bdb22cbd3a08eeaebf73b718fd68dc458cfd0008c168c234ae7827d62cb0448b0c36af1c5
+
+
diff --git a/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java b/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java
index adb41fdcf52..c2685c671b3 100644
--- a/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java
+++ b/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java
@@ -16,6 +16,12 @@
*/
package org.apache.pdfbox.pdfwriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
@@ -28,14 +34,13 @@
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.font.Standard14Fonts.FontName;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
-import org.junit.jupiter.api.Test;
+import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
+import org.apache.pdfbox.pdmodel.interactive.form.PDCheckBox;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import java.io.File;
-import java.util.List;
-import java.util.Map;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.junit.jupiter.api.Test;
/**
* This test attempts to save different documents compressed, without causing errors, it also checks, whether the PDF is
@@ -258,4 +263,25 @@ void testAlteredDoc() throws Exception
}
}
+ /**
+ * Check that the bug from PDFBOX-5927 is fixed. This one caused a dictionary key to be written
+ * as an indirect object in an object stream.
+ *
+ * @throws IOException
+ */
+ @Test
+ void testPDFBox5927() throws IOException
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try (PDDocument doc = Loader.loadPDF(new File("target/pdfs","PDFBOX-5927.pdf")))
+ {
+ doc.save(baos);
+ }
+ try (PDDocument doc = Loader.loadPDF(baos.toByteArray()))
+ {
+ PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();
+ PDCheckBox cb = (PDCheckBox) acroForm.getField("chkPrivacy1");
+ assertTrue(cb.isChecked());
+ }
+ }
}