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)
{