diff --git a/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java b/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java index ea5d9cd0807..86997c347f7 100644 --- a/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java +++ b/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java @@ -795,6 +795,7 @@ else if (destOCP != null && srcOCP != null) if (!srcNumberTreeAsMap.isEmpty()) { mergeStructTree = true; + destParentTreeNextKey -= Collections.min(srcNumberTreeAsMap.keySet()); // allow for negative struct parent values } } } @@ -1498,8 +1499,8 @@ private void updateStructParentEntries(PDPage page, int structParentOffset) thro List newannots = new ArrayList<>(annots.size()); annots.forEach(annot -> { - int structParent = annot.getStructParent(); - if (structParent >= 0) + int structParent = annot.getCOSObject().getInt(COSName.STRUCT_PARENT, Integer.MIN_VALUE); // allow for negative struct parent values + if (structParent > Integer.MIN_VALUE) // allow for negative struct parent values { annot.setStructParent(structParent + structParentOffset); }