You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2014/10/12 19:15:53 UTC

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

Author: lehmi
Date: Sun Oct 12 17:15:53 2014
New Revision: 1631221

URL: http://svn.apache.org/r1631221
Log:
PDFBOX-2395: don't overwrite the first part of the documentID

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=1631221&r1=1631220&r2=1631221&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 Sun Oct 12 17:15:53 2014
@@ -1332,7 +1332,13 @@ public class COSWriter implements ICOSVi
         COSDocument cosDoc = document.getDocument();
         COSDictionary trailer = cosDoc.getTrailer();
         COSArray idArray = (COSArray)trailer.getDictionaryObject( COSName.ID );
-        if( idArray == null || incrementalUpdate)
+        boolean missingID = true;
+        // check for an existing documentID
+        if (idArray != null && idArray.size() == 2)
+        {
+            missingID = false;
+        }
+        if( missingID || incrementalUpdate)
         {
             MessageDigest md5;
             try
@@ -1359,9 +1365,11 @@ public class COSWriter implements ICOSVi
                 }
             }
             idArray = new COSArray();
-            COSString id = new COSString( md5.digest() );
-            idArray.add( id );
-            idArray.add( id );
+            // reuse origin documentID if available as first value
+            COSString firstID = missingID ? new COSString( md5.digest() ) : (COSString)idArray.get(0);
+            COSString secondID = new COSString( md5.digest() );
+            idArray.add( firstID );
+            idArray.add( secondID );
             trailer.setItem( COSName.ID, idArray );
         }
         cosDoc.accept(this);