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/09/14 10:41:28 UTC
svn commit: r1624810 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos: COSDocument.java
COSStream.java
Author: lehmi
Date: Sun Sep 14 08:41:28 2014
New Revision: 1624810
URL: http://svn.apache.org/r1624810
Log:
PDFBOX-2301: move the handling of scratch files to COSStream
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
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=1624810&r1=1624809&r2=1624810&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 Sun Sep 14 08:41:28 2014
@@ -28,7 +28,6 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.pdfbox.io.RandomAccessFile;
import org.apache.pdfbox.pdfparser.NonSequentialPDFParser;
import org.apache.pdfbox.pdfparser.PDFObjectStreamParser;
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface;
@@ -186,19 +185,7 @@ public class COSDocument extends COSBase
*/
public COSStream createCOSStream()
{
- RandomAccessFile scratchFile = null;
- if (useScratchFiles)
- {
- scratchFile = createScratchFile();
- }
- if (scratchFile != null)
- {
- return new COSStream( scratchFile );
- }
- else
- {
- return new COSStream( );
- }
+ return new COSStream( useScratchFiles, scratchDirectory);
}
/**
@@ -210,36 +197,9 @@ public class COSDocument extends COSBase
*/
public COSStream createCOSStream(COSDictionary dictionary)
{
- RandomAccessFile scratchFile = null;
- if (useScratchFiles)
- {
- scratchFile = createScratchFile();
- }
- if (scratchFile != null)
- {
- return new COSStream( dictionary, scratchFile );
- }
- else
- {
- return new COSStream( dictionary );
- }
+ return new COSStream( dictionary, useScratchFiles, scratchDirectory );
}
- private RandomAccessFile createScratchFile()
- {
- RandomAccessFile buffer = null;
- try
- {
- File scratchFile = File.createTempFile("PDFBox", null, scratchDirectory);
- scratchFile.deleteOnExit();
- buffer = new RandomAccessFile(scratchFile, "rw");
- }
- catch (IOException exception)
- {
- LOG.error("Can't create temp file, using memory buffer instead", exception);
- }
- return buffer;
- }
/**
* This will get the first dictionary object by type.
*
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=1624810&r1=1624809&r2=1624810&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 Sun Sep 14 08:41:28 2014
@@ -20,6 +20,7 @@ import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.Closeable;
+import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -33,6 +34,7 @@ import org.apache.pdfbox.filter.FilterFa
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.io.RandomAccess;
import org.apache.pdfbox.io.RandomAccessBuffer;
+import org.apache.pdfbox.io.RandomAccessFile;
import org.apache.pdfbox.io.RandomAccessFileInputStream;
import org.apache.pdfbox.io.RandomAccessFileOutputStream;
import org.apache.pdfbox.pdfparser.PDFStreamParser;
@@ -40,7 +42,7 @@ import org.apache.pdfbox.pdfparser.PDFSt
/**
* This class represents a stream object in a PDF document.
*
- * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
+ * @author Ben Litchfield
*/
public class COSStream extends COSDictionary implements Closeable
{
@@ -69,8 +71,7 @@ public class COSStream extends COSDictio
*/
public COSStream( )
{
- super();
- buffer = new RandomAccessBuffer();
+ this(false, null);
}
/**
@@ -81,19 +82,24 @@ public class COSStream extends COSDictio
*/
public COSStream( COSDictionary dictionary )
{
- super( dictionary );
- buffer = new RandomAccessBuffer();
+ this(dictionary, false, null);
}
/**
* Constructor. Creates a new stream with an empty dictionary.
*
*/
- protected COSStream( RandomAccess randomBuffer )
+ public COSStream( boolean useScratchFiles, File scratchDirectory )
{
super();
- buffer = randomBuffer;
-
+ if (useScratchFiles)
+ {
+ buffer = createScratchFile(scratchDirectory);
+ }
+ if (buffer == null)
+ {
+ buffer = new RandomAccessBuffer();
+ }
}
/**
@@ -102,10 +108,33 @@ public class COSStream extends COSDictio
* @param dictionary The dictionary that is associated with this stream.
*
*/
- protected COSStream( COSDictionary dictionary, RandomAccess randomBuffer )
+ public COSStream( COSDictionary dictionary, boolean useScratchFiles, File scratchDirectory )
{
super( dictionary );
- buffer = randomBuffer;
+ if (useScratchFiles)
+ {
+ buffer = createScratchFile(scratchDirectory);
+ }
+ if (buffer == null)
+ {
+ buffer = new RandomAccessBuffer();
+ }
+ }
+
+ private RandomAccessFile createScratchFile(File scratchDirectory)
+ {
+ RandomAccessFile buffer = null;
+ try
+ {
+ File scratchFile = File.createTempFile("PDFBox", null, scratchDirectory);
+ scratchFile.deleteOnExit();
+ buffer = new RandomAccessFile(scratchFile, "rw");
+ }
+ catch (IOException exception)
+ {
+ LOG.error("Can't create temp file, using memory buffer instead", exception);
+ }
+ return buffer;
}
/**