Author: tilman
Date: Tue Feb 11 13:10:07 2025
New Revision: 1923731
URL: http://svn.apache.org/viewvc?rev=1923731&view=rev
Log:
PDFBOX-5950: add test with 2 files from issue 515
Modified:
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
Modified:
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java?rev=1923731&r1=1923730&r2=1923731&view=diff
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
(original)
+++
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
Tue Feb 11 13:10:07 2025
@@ -40,12 +40,14 @@ import org.apache.pdfbox.pdmodel.PDDocum
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageTree;
+import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.common.COSObjectable;
import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
import org.apache.pdfbox.pdmodel.common.PDNumberTreeNode;
import
org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureElement;
import
org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureNode;
import
org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureTreeRoot;
+import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.pdmodel.interactive.action.PDAction;
import org.apache.pdfbox.pdmodel.interactive.action.PDActionGoTo;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
@@ -1354,4 +1356,34 @@ class PDFMergerUtilityTest
assertEquals(2, mergedDoc.getNumberOfPages());
}
}
-}
+
+ /**
+ * PDFBOX-515 / PDFBOX-5950: test merging of two files where one file has
a stream deep down in
+ * the info dictionary (Info/ImPDF/Images/Kids/[0]). This test will pass
only if the source file
+ * isn't closed prematurely, or if deep cloning is applied.
+ *
+ * @throws IOException
+ */
+ @Test
+ void testPDFBox515() throws IOException
+ {
+ PDFMergerUtility pdfMergerUtility = new PDFMergerUtility();
+ pdfMergerUtility.addSource(new File(TARGETPDFDIR, "ComSquare1.pdf"));
+ pdfMergerUtility.addSource(new File(TARGETPDFDIR, "Ghostscript1.pdf"));
+ pdfMergerUtility.setDestinationFileName(TARGETTESTDIR +
"PDFBOX-515-result.pdf");
+ pdfMergerUtility.mergeDocuments(IOUtils.createMemoryOnlyStreamCache());
+
+ try (PDDocument mergedDoc = Loader.loadPDF(new File(TARGETTESTDIR,
"PDFBOX-515-result.pdf")))
+ {
+ assertEquals(2, mergedDoc.getNumberOfPages());
+ COSDictionary imageDict = (COSDictionary)
mergedDoc.getDocumentInformation().getCOSObject().
+ getCOSDictionary(COSName.getPDFName("ImPDF")).
+ getCOSDictionary(COSName.getPDFName("Images")).
+ getCOSArray(COSName.KIDS).getObject(0);
+ PDImageXObject imageXObject = (PDImageXObject)
PDImageXObject.createXObject(imageDict, new PDResources());
+ assertEquals(909, imageXObject.getWidth());
+ assertEquals(233, imageXObject.getHeight());
+ System.out.println(imageXObject.getImage());
+ }
+ }
+}
\ No newline at end of file