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);
         });