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()); + } + } }