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 2020/06/06 13:43:00 UTC

svn commit: r1878544 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: cos/COSDocument.java cos/COSStream.java pdfparser/PDFParser.java pdmodel/PDDocument.java

Author: lehmi
Date: Sat Jun  6 13:43:00 2020
New Revision: 1878544

URL: http://svn.apache.org/viewvc?rev=1878544&view=rev
Log:
PDFBOX-4836: limit the ScratchFile default creation to COS-layer

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.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

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=1878544&r1=1878543&r2=1878544&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 Jun  6 13:43:00 2020
@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.io.IOUtils;
+import org.apache.pdfbox.io.MemoryUsageSetting;
 import org.apache.pdfbox.io.ScratchFile;
 
 /**
@@ -98,7 +99,7 @@ public class COSDocument extends COSBase
      */
     public COSDocument()
     {
-        this(ScratchFile.getMainMemoryOnlyInstance(), null);
+        this(MemoryUsageSetting.setupMainMemoryOnly());
     }
 
     /**
@@ -112,15 +113,24 @@ public class COSDocument extends COSBase
     }
 
     /**
-     * Constructor that will use the provide memory handler for storage of the
-     * PDF streams.
+     * Constructor that will use the provide memory settings for storage of the PDF streams.
      *
-     * @param scratchFile memory handler for buffering of PDF streams
+     * @param memUsageSetting defines how memory is used for buffering PDF streams
      * 
      */
-    public COSDocument(ScratchFile scratchFile)
+    public COSDocument(MemoryUsageSetting memUsageSetting)
     {
-        this(scratchFile, null);
+        try
+        {
+            scratchFile = new ScratchFile(memUsageSetting);
+        }
+        catch (IOException ioe)
+        {
+            LOG.warn("Error initializing scratch file: " + ioe.getMessage()
+                    + ". Fall back to main memory usage only.", ioe);
+
+            scratchFile = ScratchFile.getMainMemoryOnlyInstance();
+        }
     }
 
     /**
@@ -132,7 +142,8 @@ public class COSDocument extends COSBase
      */
     public COSDocument(ScratchFile scratchFile, ICOSParser parser)
     {
-        this.scratchFile = scratchFile;
+        this.scratchFile = scratchFile != null ? scratchFile
+                : ScratchFile.getMainMemoryOnlyInstance();
         this.parser = parser;
     }
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java?rev=1878544&r1=1878543&r2=1878544&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java Sat Jun  6 13:43:00 2020
@@ -68,7 +68,7 @@ public class COSStream extends COSDictio
      */
     public COSStream()
     {
-        this(ScratchFile.getMainMemoryOnlyInstance());
+        this(null);
     }
     
     /**

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=1878544&r1=1878543&r2=1878544&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 Jun  6 13:43:00 2020
@@ -45,7 +45,7 @@ public class PDFParser extends COSParser
      */
     public PDFParser(RandomAccessRead source) throws IOException
     {
-        this(source, "", ScratchFile.getMainMemoryOnlyInstance());
+        this(source, "", null);
     }
 
     /**
@@ -71,7 +71,7 @@ public class PDFParser extends COSParser
      */
     public PDFParser(RandomAccessRead source, String decryptionPassword) throws IOException
     {
-        this(source, decryptionPassword, ScratchFile.getMainMemoryOnlyInstance());
+        this(source, decryptionPassword, null);
     }
 
     /**
@@ -103,7 +103,7 @@ public class PDFParser extends COSParser
     public PDFParser(RandomAccessRead source, String decryptionPassword, InputStream keyStore,
             String alias) throws IOException
     {
-        this(source, decryptionPassword, keyStore, alias, ScratchFile.getMainMemoryOnlyInstance());
+        this(source, decryptionPassword, keyStore, alias, 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=1878544&r1=1878543&r2=1878544&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 Jun  6 13:43:00 2020
@@ -48,7 +48,6 @@ import org.apache.pdfbox.cos.COSUpdateIn
 import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.io.MemoryUsageSetting;
 import org.apache.pdfbox.io.RandomAccessRead;
-import org.apache.pdfbox.io.ScratchFile;
 import org.apache.pdfbox.pdfwriter.COSWriter;
 import org.apache.pdfbox.pdmodel.common.COSArrayList;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
@@ -167,20 +166,7 @@ public class PDDocument implements Close
      */
     public PDDocument(MemoryUsageSetting memUsageSetting)
     {
-        ScratchFile scratchFile = null;
-        try
-        {
-            scratchFile = new ScratchFile(memUsageSetting);
-        }
-        catch (IOException ioe)
-        {
-            LOG.warn("Error initializing scratch file: " + ioe.getMessage() +
-                     ". Fall back to main memory usage only.", ioe);
-            
-            scratchFile = ScratchFile.getMainMemoryOnlyInstance();
-        }
-        
-        document = new COSDocument(scratchFile);
+        document = new COSDocument(memUsageSetting);
         pdfSource = null;
 
         // First we need a trailer