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 2013/05/04 18:44:31 UTC

svn commit: r1479136 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: ./ cos/ pdfparser/ pdmodel/ pdmodel/common/ pdmodel/interactive/form/ util/

Author: lehmi
Date: Sat May  4 16:44:30 2013
New Revision: 1479136

URL: http://svn.apache.org/r1479136
Log:
PDFBOX-1568: removed most of the direct accesses to the scratch file of a COSDocument

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Overlay.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSStreamArray.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Overlay.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Overlay.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Overlay.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Overlay.java Sat May  4 16:44:30 2013
@@ -224,12 +224,12 @@ public class Overlay
         collectLayoutPages( overlayCatalog.getAllPages() );
 
         COSDictionary saveGraphicsStateDic = new COSDictionary();
-        saveGraphicsStateStream = new COSStream( saveGraphicsStateDic, pdfDocument.getDocument().getScratchFile() );
+        saveGraphicsStateStream = pdfDocument.getDocument().createCOSStream(saveGraphicsStateDic);
         OutputStream saveStream = saveGraphicsStateStream.createUnfilteredStream();
         saveStream.write( " q\n".getBytes("ISO-8859-1") );
         saveStream.flush();
 
-        restoreGraphicsStateStream = new COSStream( saveGraphicsStateDic, pdfDocument.getDocument().getScratchFile() );
+        restoreGraphicsStateStream = pdfDocument.getDocument().createCOSStream(saveGraphicsStateDic);
         OutputStream restoreStream = restoreGraphicsStateStream.createUnfilteredStream();
         restoreStream.write( " Q\n".getBytes("ISO-8859-1") );
         restoreStream.flush();
@@ -353,7 +353,7 @@ public class Overlay
 
         COSDictionary streamDict = new COSDictionary();
         streamDict.setInt(COSName.LENGTH, baos.size());
-        COSStream output = new COSStream(streamDict, pdfDocument.getDocument().getScratchFile());
+        COSStream output = pdfDocument.getDocument().createCOSStream(streamDict);
         output.setFilters(stream.getFilters());
         OutputStream os = output.createUnfilteredStream();
         baos.writeTo(os);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java Sat May  4 16:44:30 2013
@@ -71,11 +71,6 @@ public class COSDocument extends COSBase
     private COSDictionary trailer;
     
     /**
-     * Document signature dictionary.
-     */
-    private COSDictionary signDictionary = null;
-    
-    /**
      * Signature interface.
      */
     private SignatureInterface signatureInterface;
@@ -178,10 +173,43 @@ public class COSDocument extends COSBase
      * This will get the scratch file for this document.
      *
      * @return The scratch file.
+     * 
+     * 
      */
     public RandomAccess getScratchFile()
     {
-        return scratchFile;
+        // TODO the direct access to the scratch file should be removed.
+        if (!closed)
+        {
+            return scratchFile;
+        }
+        else
+        {
+            LOG.error("Can't access the scratch file as it is already closed!");
+            return null;
+        }
+    }
+
+    /**
+     * Create a new COSStream using the underlying scratch file.
+     * 
+     * @return the new COSStream
+     */
+    public COSStream createCOSStream()
+    {
+        return new COSStream( getScratchFile() );
+    }
+
+    /**
+     * Create a new COSStream using the underlying scratch file.
+     *
+     * @param dictionary the corresponding dictionary
+     * 
+     * @return the new COSStream
+     */
+    public COSStream createCOSStream(COSDictionary dictionary)
+    {
+        return new COSStream( dictionary, getScratchFile() );
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java Sat May  4 16:44:30 2013
@@ -605,6 +605,10 @@ public final class COSName extends COSBa
     /**
     * A common COSName value.
     */
+    public static final COSName FIRST = new COSName( "First" );
+    /**
+    * A common COSName value.
+    */
     public static final COSName FIRST_CHAR = new COSName( "FirstChar" );
     /**
      * A common COSName value.

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java Sat May  4 16:44:30 2013
@@ -688,6 +688,7 @@ public class NonSequentialPDFParser exte
                 try
                 {
                     document.close();
+                    document = null;
                 }
                 catch (IOException ioe)
                 {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java Sat May  4 16:44:30 2013
@@ -234,6 +234,7 @@ public class PDFParser extends BaseParse
             if( document != null )
             {
                 document.close();
+                document = null;
             }
             if( t instanceof IOException )
             {

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=1479136&r1=1479135&r2=1479136&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 Sat May  4 16:44:30 2013
@@ -420,7 +420,7 @@ public class PDDocument implements Pagea
             acroFormDict.setItem(COSName.DR, null);
             // Set empty Appearance-Dictionary
             PDAppearanceDictionary ap = new PDAppearanceDictionary();
-            COSStream apsStream = new COSStream(getDocument().getScratchFile());
+            COSStream apsStream = getDocument().createCOSStream();
             apsStream.createUnfilteredStream();
             PDAppearanceStream aps = new PDAppearanceStream(apsStream);
             COSDictionary cosObject = (COSDictionary)aps.getCOSObject();
@@ -644,7 +644,7 @@ public class PDDocument implements Pagea
             PDStream src = page.getContents();
             if(src != null)
             {
-                PDStream dest = new PDStream( new COSStream( src.getStream(), document.getScratchFile() ) );
+                PDStream dest = new PDStream( document.createCOSStream(src.getStream()));
                 importedPage.setContents( dest );
                 os = dest.createOutputStream();
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSStreamArray.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSStreamArray.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSStreamArray.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSStreamArray.java Sat May  4 16:44:30 2013
@@ -94,6 +94,7 @@ public class COSStreamArray extends COSS
      * This will get the scratch file associated with this stream.
      *
      * @return The scratch file where this stream is being stored.
+     * 
      */
     public RandomAccess getScratchFile()
     {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java Sat May  4 16:44:30 2013
@@ -51,9 +51,9 @@ public class PDObjectStream extends PDSt
      */
     public static PDObjectStream createStream( PDDocument document )
     {
-        COSStream cosStream = new COSStream( document.getDocument().getScratchFile() );
+        COSStream cosStream = document.getDocument().createCOSStream();
         PDObjectStream strm = new PDObjectStream( cosStream );
-        strm.getStream().setName( "Type", "ObjStm" );
+        strm.getStream().setName( COSName.TYPE, "ObjStm" );
         return strm;
     }
 
@@ -64,7 +64,7 @@ public class PDObjectStream extends PDSt
      */
     public String getType()
     {
-        return getStream().getNameAsString( "Type" );
+        return getStream().getNameAsString( COSName.TYPE );
     }
 
     /**
@@ -74,7 +74,7 @@ public class PDObjectStream extends PDSt
      */
     public int getNumberOfObjects()
     {
-        return getStream().getInt( "N", 0 );
+        return getStream().getInt( COSName.N, 0 );
     }
 
     /**
@@ -84,7 +84,7 @@ public class PDObjectStream extends PDSt
      */
     public void setNumberOfObjects( int n )
     {
-        getStream().setInt( "N", n );
+        getStream().setInt( COSName.N, n );
     }
 
     /**
@@ -94,7 +94,7 @@ public class PDObjectStream extends PDSt
      */
     public int getFirstByteOffset()
     {
-        return getStream().getInt( "First", 0 );
+        return getStream().getInt( COSName.FIRST, 0 );
     }
 
     /**
@@ -104,7 +104,7 @@ public class PDObjectStream extends PDSt
      */
     public void setFirstByteOffset( int n )
     {
-        getStream().setInt( "First", n );
+        getStream().setInt( COSName.FIRST, n );
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java Sat May  4 16:44:30 2013
@@ -67,7 +67,7 @@ public class PDStream implements COSObje
      */
     public PDStream(PDDocument document)
     {
-        stream = new COSStream(document.getDocument().getScratchFile());
+        stream = document.getDocument().createCOSStream();
     }
 
     /**
@@ -116,7 +116,7 @@ public class PDStream implements COSObje
         OutputStream output = null;
         try
         {
-            stream = new COSStream(doc.getDocument().getScratchFile());
+            stream = doc.getDocument().createCOSStream();
             if (filtered)
             {
                 output = stream.createFilteredStream();

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java Sat May  4 16:44:30 2013
@@ -257,7 +257,7 @@ public class PDAppearance
                 PDAppearanceStream appearanceStream = (PDAppearanceStream)normalAppearance.get( "default" );
                 if( appearanceStream == null )
                 {
-                    COSStream cosStream = new COSStream( acroForm.getDocument().getDocument().getScratchFile() );
+                    COSStream cosStream = acroForm.getDocument().getDocument().createCOSStream();
                     appearanceStream = new PDAppearanceStream( cosStream );
                     appearanceStream.setBoundingBox( widget.getRectangle().createRetranslatedRectangle() );
                     appearance.setNormalAppearance( appearanceStream );

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java?rev=1479136&r1=1479135&r2=1479136&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java Sat May  4 16:44:30 2013
@@ -83,14 +83,12 @@ public class LayerUtility
     public void wrapInSaveRestore(PDPage page) throws IOException
     {
         COSDictionary saveGraphicsStateDic = new COSDictionary();
-        COSStream saveGraphicsStateStream = new COSStream(saveGraphicsStateDic,
-                getDocument().getDocument().getScratchFile());
+        COSStream saveGraphicsStateStream = getDocument().getDocument().createCOSStream(saveGraphicsStateDic);
         OutputStream saveStream = saveGraphicsStateStream.createUnfilteredStream();
         saveStream.write("q\n".getBytes("ISO-8859-1"));
         saveStream.flush();
 
-        COSStream restoreGraphicsStateStream = new COSStream(saveGraphicsStateDic,
-                getDocument().getDocument().getScratchFile());
+        COSStream restoreGraphicsStateStream = getDocument().getDocument().createCOSStream(saveGraphicsStateDic);
         OutputStream restoreStream = restoreGraphicsStateStream.createUnfilteredStream();
         restoreStream.write("Q\n".getBytes("ISO-8859-1"));
         restoreStream.flush();