Author: tilman
Date: Sat May 17 13:14:01 2025
New Revision: 1925628

URL: http://svn.apache.org/viewvc?rev=1925628&view=rev
Log:
PDFBOX-6009: recalculate ParentTreeNextKey because it might be missing

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

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java?rev=1925628&r1=1925627&r2=1925628&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
 Sat May 17 13:14:01 2025
@@ -236,7 +236,20 @@ public class Splitter
         dstNumberTreeNode.setNumbers(dstNumberTreeAsMap);
         dstStructureTreeRoot.setParentTree(dstNumberTreeNode);
 
-        
dstStructureTreeRoot.setParentTreeNextKey(srcStructureTreeRoot.getParentTreeNextKey());
+        // get highest key + 1
+        int maxKey = -1;
+        for (int key : dstNumberTreeAsMap.keySet())
+        {
+            if (key > maxKey)
+            {
+                maxKey = key;
+            }
+        }
+        if (maxKey != -1)
+        {
+            dstStructureTreeRoot.setParentTreeNextKey(maxKey + 1);
+        }
+
         dstStructureTreeRoot.setClassMap(srcStructureTreeRoot.getClassMap());
         cloneRoleMap(srcStructureTreeRoot, dstStructureTreeRoot);
         cloneIDTree(srcStructureTreeRoot, dstStructureTreeRoot);

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=1925628&r1=1925627&r2=1925628&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
 Sat May 17 13:14:01 2025
@@ -71,6 +71,7 @@ import org.apache.pdfbox.pdmodel.interac
 import org.apache.pdfbox.rendering.PDFRenderer;
 import org.apache.pdfbox.text.PDFMarkedContentExtractor;
 import org.junit.Assert;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertThrows;
 import org.junit.function.ThrowingRunnable;
 
@@ -640,6 +641,7 @@ public class PDFMergerUtilityTest extend
     {
         PDDocumentCatalog documentCatalog = document.getDocumentCatalog();
         PDNumberTreeNode parentTree = 
documentCatalog.getStructureTreeRoot().getParentTree();
+        assertNotEquals(-1, 
documentCatalog.getStructureTreeRoot().getParentTreeNextKey());
         Map<Integer, COSObjectable> numberTreeAsMap = 
PDFMergerUtility.getNumberTreeAsMap(parentTree);
         Set<Integer> keySet = numberTreeAsMap.keySet();
         PDAcroForm acroForm = documentCatalog.getAcroForm();


Reply via email to