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 2022/08/28 15:07:15 UTC

svn commit: r1903739 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java

Author: tilman
Date: Sun Aug 28 15:07:14 2022
New Revision: 1903739

URL: http://svn.apache.org/viewvc?rev=1903739&view=rev
Log:
PDFBOX-4892: optimize, as suggested by Valery Bokov

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java?rev=1903739&r1=1903738&r2=1903739&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java Sun Aug 28 15:07:14 2022
@@ -51,6 +51,7 @@ import org.apache.pdfbox.pdmodel.PDDocum
 import org.apache.pdfbox.pdmodel.PDDocumentNameDestinationDictionary;
 import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
 import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDPageTree;
 import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.PDStructureElementNameTreeNode;
 import org.apache.pdfbox.pdmodel.PageMode;
@@ -365,6 +366,7 @@ public class PDFMergerUtility
         try (PDDocument destination = new PDDocument(memUsageSetting))
         {
             PDFCloneUtility cloner = new PDFCloneUtility(destination);
+            PDPageTree destinationPageTree = destination.getPages(); // cache PageTree
             for (Object sourceObject : sources)
             {
                 PDDocument sourceDoc = null;
@@ -397,7 +399,7 @@ public class PDFMergerUtility
                         {
                             newPage.setResources(new PDResources());
                         }
-                        destination.addPage(newPage);
+                        destinationPageTree.add(newPage);
                     }
                 }
                 finally
@@ -795,6 +797,7 @@ public class PDFMergerUtility
 
         Map<COSDictionary, COSDictionary> objMapping = new HashMap<>();
         int pageIndex = 0;
+        PDPageTree destinationPageTree = destination.getPages(); // cache PageTree
         for (PDPage page : srcCatalog.getPages())
         {
             PDPage newPage = new PDPage(cloner.cloneForNewDocument(page.getCOSObject()));
@@ -835,7 +838,7 @@ public class PDFMergerUtility
                 }
                 // TODO update mapping for XObjects
             }
-            destination.addPage(newPage);
+            destinationPageTree.add(newPage);
             
             if (pageIndex == pageIndexOpenActionDest)
             {