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 2021/09/11 17:12:18 UTC
svn commit: r1893255 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java
Author: tilman
Date: Sat Sep 11 17:12:18 2021
New Revision: 1893255
URL: http://svn.apache.org/viewvc?rev=1893255&view=rev
Log:
PDFBOX-4892: simplify / optimize code, as suggested by valerybokov
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=1893255&r1=1893254&r2=1893255&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 Sat Sep 11 17:12:18 2021
@@ -960,32 +960,16 @@ public class PDFMergerUtility
PDStructureTreeRoot srcStructTree,
PDStructureTreeRoot destStructTree) throws IOException
{
- COSArray dstKArray = new COSArray();
- if (destStructTree.getK() != null)
+ COSBase srcKEntry = srcStructTree.getK();
+ COSArray srcKArray = new COSArray();
+ COSBase clonedSrcKEntry = cloner.cloneForNewDocument(srcKEntry);
+ if (clonedSrcKEntry instanceof COSArray)
{
- COSBase base = destStructTree.getK();
- if (base instanceof COSArray)
- {
- dstKArray.addAll((COSArray) base);
- }
- else if (base instanceof COSDictionary)
- {
- dstKArray.add(base);
- }
+ srcKArray.addAll((COSArray) clonedSrcKEntry);
}
-
- COSArray srcKArray = new COSArray();
- if (srcStructTree.getK() != null)
+ else if (clonedSrcKEntry instanceof COSDictionary)
{
- COSBase base = cloner.cloneForNewDocument(srcStructTree.getK());
- if (base instanceof COSArray)
- {
- srcKArray.addAll((COSArray) base);
- }
- else if (base instanceof COSDictionary)
- {
- srcKArray.add(base);
- }
+ srcKArray.add(clonedSrcKEntry);
}
if (srcKArray.size() == 0)
@@ -993,6 +977,17 @@ public class PDFMergerUtility
return;
}
+ COSArray dstKArray = new COSArray();
+ COSBase dstKEntry = destStructTree.getK();
+ if (dstKEntry instanceof COSArray)
+ {
+ dstKArray.addAll((COSArray) dstKEntry);
+ }
+ else if (dstKEntry instanceof COSDictionary)
+ {
+ dstKArray.add(dstKEntry);
+ }
+
if (dstKArray.size() == 1 && dstKArray.getObject(0) instanceof COSDictionary)
{
// Only one element in the destination. If it is a /Document and its children
@@ -1044,8 +1039,8 @@ public class PDFMergerUtility
return false;
}
COSDictionary dict = (COSDictionary) base;
- if (!COSName.DOCUMENT.equals(dict.getCOSName(COSName.S)) &&
- !COSName.PART.equals(dict.getCOSName(COSName.S)))
+ COSName sEntry = dict.getCOSName(COSName.S);
+ if (!COSName.DOCUMENT.equals(sEntry) && !COSName.PART.equals(sEntry))
{
return false;
}
@@ -1480,17 +1475,19 @@ public class PDFMergerUtility
*/
private void updateStructParentEntries(PDPage page, int structParentOffset) throws IOException
{
- if (page.getStructParents() >= 0)
+ int structParents = page.getStructParents();
+ if (structParents >= 0)
{
- page.setStructParents(page.getStructParents() + structParentOffset);
+ page.setStructParents(structParents + structParentOffset);
}
List<PDAnnotation> annots = page.getAnnotations();
List<PDAnnotation> newannots = new ArrayList<>(annots.size());
annots.forEach(annot ->
{
- if (annot.getStructParent() >= 0)
+ int structParent = annot.getStructParent();
+ if (structParent >= 0)
{
- annot.setStructParent(annot.getStructParent() + structParentOffset);
+ annot.setStructParent(structParent + structParentOffset);
}
newannots.add(annot);
});