Author: tilman
Date: Sat May 17 13:14:06 2025
New Revision: 1925629
URL: http://svn.apache.org/viewvc?rev=1925629&view=rev
Log:
PDFBOX-6009: recalculate ParentTreeNextKey because it might be missing
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java?rev=1925629&r1=1925628&r2=1925629&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
Sat May 17 13:14:06 2025
@@ -23,6 +23,7 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import org.apache.logging.log4j.Logger;
@@ -236,7 +237,13 @@ public class Splitter
dstNumberTreeNode.setNumbers(dstNumberTreeAsMap);
dstStructureTreeRoot.setParentTree(dstNumberTreeNode);
-
dstStructureTreeRoot.setParentTreeNextKey(srcStructureTreeRoot.getParentTreeNextKey());
+ // get highest key + 1
+ Optional<Integer> max =
dstNumberTreeAsMap.keySet().stream().max(Integer::compareTo);
+ if (max.isPresent())
+ {
+ dstStructureTreeRoot.setParentTreeNextKey(max.get() + 1);
+ }
+
dstStructureTreeRoot.setClassMap(srcStructureTreeRoot.getClassMap());
cloneRoleMap(srcStructureTreeRoot, dstStructureTreeRoot);
cloneIDTree(srcStructureTreeRoot, dstStructureTreeRoot);
Modified:
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java?rev=1925629&r1=1925628&r2=1925629&view=diff
==============================================================================
---
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
(original)
+++
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java
Sat May 17 13:14:06 2025
@@ -663,6 +663,7 @@ class PDFMergerUtilityTest
{
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();