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 2022/09/28 07:03:18 UTC

svn commit: r1904318 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Author: tilman
Date: Wed Sep 28 07:03:18 2022
New Revision: 1904318

URL: http://svn.apache.org/viewvc?rev=1904318&view=rev
Log:
PDFBOX-5521: refactor

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1904318&r1=1904317&r2=1904318&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Wed Sep 28 07:03:18 2022
@@ -1156,33 +1156,7 @@ public class COSWriter implements ICOSVi
     @Override
     public void visitFromDictionary(COSDictionary obj) throws IOException
     {
-        if (!reachedSignature && incrementalUpdate)
-        {
-            COSBase itemType = obj.getItem(COSName.TYPE);
-            if (COSName.SIG.equals(itemType) || COSName.DOC_TIME_STAMP.equals(itemType))
-            {
-                COSArray byteRange = obj.getCOSArray(COSName.BYTERANGE);
-                if (byteRange != null && byteRange.size() == 4)
-                {
-                    COSBase base2 = byteRange.get(2);
-                    COSBase base3 = byteRange.get(3);
-                    if (base2 instanceof COSInteger && base3 instanceof COSInteger)
-                    {
-                        long br2 = ((COSInteger) base2).longValue();
-                        long br3 = ((COSInteger) base3).longValue();
-                        if (br2 + br3 > incrementalInput.length())
-                        {
-                            reachedSignature = true;
-                        }
-                        else
-                        {
-                            LOG.warn("An existing signature is part of incremental saving near offset " + 
-                                    getStandardOutput().getPos());
-                        }
-                    }
-                }
-            }
-        }
+        detectPossibleSignature(obj);
         getStandardOutput().write(DICT_OPEN);
         getStandardOutput().writeEOL();
         for (Map.Entry<COSName, COSBase> entry : obj.entrySet())
@@ -1267,6 +1241,37 @@ public class COSWriter implements ICOSVi
         getStandardOutput().writeEOL();
     }
 
+    private void detectPossibleSignature(COSDictionary obj) throws IOException
+    {
+        if (!reachedSignature && incrementalUpdate)
+        {
+            COSBase itemType = obj.getItem(COSName.TYPE);
+            if (COSName.SIG.equals(itemType) || COSName.DOC_TIME_STAMP.equals(itemType))
+            {
+                COSArray byteRange = obj.getCOSArray(COSName.BYTERANGE);
+                if (byteRange != null && byteRange.size() == 4)
+                {
+                    COSBase base2 = byteRange.get(2);
+                    COSBase base3 = byteRange.get(3);
+                    if (base2 instanceof COSInteger && base3 instanceof COSInteger)
+                    {
+                        long br2 = ((COSInteger) base2).longValue();
+                        long br3 = ((COSInteger) base3).longValue();
+                        if (br2 + br3 > incrementalInput.length())
+                        {
+                            reachedSignature = true;
+                        }
+                        else
+                        {
+                            LOG.warn("An existing signature is part of incremental saving near offset " +
+                                    getStandardOutput().getPos());
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     @Override
     public void visitFromDocument(COSDocument doc) throws IOException
     {