Skip to content

Commit 07de098

Browse files
committed
PDFBOX-6009: recalculate ParentTreeNextKey because it might be missing
git-svn-id: https://svn.apache.org/repos/asf/pdfbox/trunk@1925629 13f79535-47bb-0310-9956-ffa450edef68
1 parent 5877928 commit 07de098

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.LinkedHashMap;
2424
import java.util.List;
2525
import java.util.Map;
26+
import java.util.Optional;
2627
import java.util.Set;
2728

2829
import org.apache.logging.log4j.Logger;
@@ -236,7 +237,13 @@ private void cloneStructureTree(PDDocument destinationDocument) throws IOExcepti
236237
dstNumberTreeNode.setNumbers(dstNumberTreeAsMap);
237238
dstStructureTreeRoot.setParentTree(dstNumberTreeNode);
238239

239-
dstStructureTreeRoot.setParentTreeNextKey(srcStructureTreeRoot.getParentTreeNextKey());
240+
// get highest key + 1
241+
Optional<Integer> max = dstNumberTreeAsMap.keySet().stream().max(Integer::compareTo);
242+
if (max.isPresent())
243+
{
244+
dstStructureTreeRoot.setParentTreeNextKey(max.get() + 1);
245+
}
246+
240247
dstStructureTreeRoot.setClassMap(srcStructureTreeRoot.getClassMap());
241248
cloneRoleMap(srcStructureTreeRoot, dstStructureTreeRoot);
242249
cloneIDTree(srcStructureTreeRoot, dstStructureTreeRoot);

pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,7 @@ void checkWithNumberTree(PDDocument document) throws IOException
663663
{
664664
PDDocumentCatalog documentCatalog = document.getDocumentCatalog();
665665
PDNumberTreeNode parentTree = documentCatalog.getStructureTreeRoot().getParentTree();
666+
assertNotEquals(-1, documentCatalog.getStructureTreeRoot().getParentTreeNextKey());
666667
Map<Integer, COSObjectable> numberTreeAsMap = PDFMergerUtility.getNumberTreeAsMap(parentTree);
667668
Set<Integer> keySet = numberTreeAsMap.keySet();
668669
PDAcroForm acroForm = documentCatalog.getAcroForm();

0 commit comments

Comments
 (0)