You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2025/02/11 11:00:43 UTC

svn commit: r1923727 - /pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java

Author: tilman
Date: Tue Feb 11 11:00:42 2025
New Revision: 1923727

URL: http://svn.apache.org/viewvc?rev=1923727&view=rev
Log:
PDFBOX-5950: add test with 2 files from issue 515

Modified:
    pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java

Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java?rev=1923727&r1=1923726&r2=1923727&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java Tue Feb 11 11:00:42 2025
@@ -43,12 +43,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;
@@ -1291,4 +1293,33 @@ public class PDFMergerUtilityTest extend
         assertEquals(2, mergedDoc.getNumberOfPages());
         mergedDoc.close();
     }
+
+    /**
+     * 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
+     */
+    public 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(MemoryUsageSetting.setupMainMemoryOnly());
+
+        PDDocument mergedDoc =
+                PDDocument.load(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());
+        mergedDoc.close();
+    }
 }