You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by tc...@apache.org on 2013/05/31 01:31:43 UTC

svn commit: r1488049 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: pdfwriter/COSWriter.java pdmodel/PDDocument.java

Author: tchojecki
Date: Thu May 30 23:31:43 2013
New Revision: 1488049

URL: http://svn.apache.org/r1488049
Log:
PDFBOX-1613: Add the ability to set the document id for a document before saving.

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.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=1488049&r1=1488048&r2=1488049&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 Thu May 30 23:31:43 2013
@@ -1420,7 +1420,10 @@ public class COSWriter implements ICOSVi
      * @throws COSVisitorException If an error occurs while generating the data.
      */
     public void write(PDDocument doc) throws COSVisitorException
-    {
+	{
+        Long idTime = doc.getDocumentId() == null ? System.currentTimeMillis() : 
+                                                    doc.getDocumentId();
+        
         document = doc;
         if(incrementalUpdate)
         {
@@ -1473,7 +1476,7 @@ public class COSWriter implements ICOSVi
                 //algorithm says to use time/path/size/values in doc to generate
                 //the id.  We don't have path or size, so do the best we can
                 MessageDigest md = MessageDigest.getInstance( "MD5" );
-                md.update( Long.toString( System.currentTimeMillis()).getBytes("ISO-8859-1") );
+                md.update( Long.toString(idTime).getBytes("ISO-8859-1") );
                 COSDictionary info = (COSDictionary)trailer.getDictionaryObject( COSName.INFO );
                 if( info != null )
                 {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1488049&r1=1488048&r2=1488049&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Thu May 30 23:31:43 2013
@@ -116,6 +116,14 @@ public class PDDocument implements Pagea
      * from this documents.
      */
     private boolean allSecurityToBeRemoved = false;
+
+    /**
+     * Keep tracking customized documentId for the trailer. If null, a new 
+     * id will be generated for the document. This ID doesn't represent the
+     * actual documentId from the trailer.
+     */
+    private Long documentId;
+
     
     /**
      * Constructor, creates a new PDF Document with no pages.  You need to add
@@ -1627,5 +1635,15 @@ public class PDDocument implements Pagea
     {
         allSecurityToBeRemoved = removeAllSecurity;
     }
+    
+    public Long getDocumentId() 
+    {
+      return documentId;
+    }
+    
+    public void setDocumentId(Long docId)
+    {
+      documentId = docId;
+    }
 }