You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/08/29 08:38:00 UTC
svn commit: r1621245 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox:
io/RandomAccessFileOutputStream.java pdfparser/BaseParser.java
pdfparser/NonSequentialPDFParser.java
Author: tilman
Date: Fri Aug 29 06:38:00 2014
New Revision: 1621245
URL: http://svn.apache.org/r1621245
Log:
PDFBOX-2296: don't call createFilteredStream() with an expected length if we know that length is wrong; code cleanup
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java?rev=1621245&r1=1621244&r2=1621245&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java Fri Aug 29 06:38:00 2014
@@ -75,12 +75,14 @@ public class RandomAccessFileOutputStrea
}
/**
- * The number of bytes written to the stream.
+ * The number of bytes written or expected in the stream.
*
- * @return The number of bytes read to the stream.
+ * @return The number of bytes written or expected in the stream.
*/
public long getLength()
{
+ //FIXME this is really dangerous, as it returns a wrong value if
+ // the actual length isn't the expected length
long length = -1;
if( expectedLength instanceof COSNumber )
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1621245&r1=1621244&r2=1621245&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java Fri Aug 29 06:38:00 2014
@@ -566,7 +566,7 @@ public abstract class BaseParser
}
// close and create new filtered stream
IOUtils.closeQuietly(out);
- out = stream.createFilteredStream( streamLength );
+ out = stream.createFilteredStream();
// scan until we find endstream:
readUntilEndStream( new EndstreamOutputStream(out) );
}
@@ -995,7 +995,7 @@ public abstract class BaseParser
*
* @throws IOException If there is an error reading from the stream.
*/
- private final COSString parseCOSHexString() throws IOException
+ private COSString parseCOSHexString() throws IOException
{
final StringBuilder sBuf = new StringBuilder();
while( true )
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=1621245&r1=1621244&r2=1621245&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 Fri Aug 29 06:38:00 2014
@@ -117,8 +117,8 @@ public class NonSequentialPDFParser exte
*/
protected SecurityHandler securityHandler = null;
- private String keyStoreFilename = null;
- private String alias = null;
+ private final String keyStoreFilename = null;
+ private final String alias = null;
private String password = "";
private int readTrailBytes = DEFAULT_TRAIL_BYTECOUNT; // how many trailing
// bytes to read for
@@ -129,7 +129,7 @@ public class NonSequentialPDFParser exte
* needed; cons: some information of catalog might not be available (e.g. outline). Catalog parsing without pages is
* not an option since a number of entries will also refer to page objects (like OpenAction).
*/
- private boolean parseMinimalCatalog = "true".equals(System.getProperty(SYSPROP_PARSEMINIMAL));
+ private final boolean parseMinimalCatalog = "true".equals(System.getProperty(SYSPROP_PARSEMINIMAL));
private boolean initialParseDone = false;
private boolean allPagesParsed = false;
@@ -266,11 +266,10 @@ public class NonSequentialPDFParser exte
*/
private File createTmpFile(InputStream input) throws IOException
{
- File tmpFile = null;
FileOutputStream fos = null;
try
{
- tmpFile = File.createTempFile(TMP_FILE_PREFIX, ".pdf");
+ File tmpFile = File.createTempFile(TMP_FILE_PREFIX, ".pdf");
fos = new FileOutputStream(tmpFile);
IOUtils.copy(input, fos);
isTmpPDFFile = true;
@@ -520,7 +519,7 @@ public class NonSequentialPDFParser exte
// ------------------------------------------------------------------------
/** Get current offset in file at which next byte would be read. */
- private final long getPdfSourceOffset()
+ private long getPdfSourceOffset()
{
return pdfSource.getOffset();
}
@@ -557,7 +556,7 @@ public class NonSequentialPDFParser exte
// pdfSource.close();
}
- private final void closeFileStream() throws IOException
+ private void closeFileStream() throws IOException
{
if (pdfSource != null)
{
@@ -985,7 +984,7 @@ public class NonSequentialPDFParser exte
/**
* Creates a unique object id using object number and object generation number. (requires object number < 2^31))
*/
- private final long getObjectId(final COSObject obj)
+ private long getObjectId(final COSObject obj)
{
return (obj.getObjectNumber().longValue() << 32) | obj.getGenerationNumber().longValue();
}
@@ -994,7 +993,7 @@ public class NonSequentialPDFParser exte
* Adds all from newObjects to toBeParsedList if it is not an COSObject or we didn't add this COSObject already
* (checked via addedObjects).
*/
- private final void addNewToList(final Queue<COSBase> toBeParsedList,
+ private void addNewToList(final Queue<COSBase> toBeParsedList,
final Collection<COSBase> newObjects, final Set<Long> addedObjects)
{
for (COSBase newObject : newObjects)
@@ -1561,7 +1560,7 @@ public class NonSequentialPDFParser exte
}
if (useReadUntilEnd)
{
- out = stream.createFilteredStream(streamLengthObj);
+ out = stream.createFilteredStream();
readUntilEndStream(new EndstreamOutputStream(out));
}
String endStream = readString();
@@ -1830,7 +1829,7 @@ public class NonSequentialPDFParser exte
return 0;
}
// the offset seems to be wrong -> seek backward to find the object we are looking for
- long currentOffset = objectOffset;
+ long currentOffset;
for (int i = 1; i < 20; i++)
{
currentOffset = objectOffset - (i * 10);