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/02/11 22:53:01 UTC
svn commit: r1567409 - in
/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel:
common/PDStream.java font/PDCIDFontType2Font.java font/PDSimpleFont.java
graphics/xobject/PDJpeg.java
Author: tilman
Date: Tue Feb 11 21:53:01 2014
New Revision: 1567409
URL: http://svn.apache.org/r1567409
Log:
PDFBOX-1909: Close open streams
Modified:
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java?rev=1567409&r1=1567408&r2=1567409&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java Tue Feb 11 21:53:01 2014
@@ -35,6 +35,7 @@ import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.filter.Filter;
import org.apache.pdfbox.filter.FilterManager;
+import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
@@ -249,21 +250,21 @@ public class PDStream implements COSObje
InputStream is = stream.getFilteredStream();
ByteArrayOutputStream os = new ByteArrayOutputStream();
List<COSName> filters = getFilters();
- COSName nextFilter = null;
boolean done = false;
for (int i = 0; i < filters.size() && !done; i++)
{
- os.reset();
- nextFilter = filters.get(i);
+ COSName nextFilter = filters.get(i);
if (stopFilters.contains(nextFilter.getName()))
{
done = true;
- }
+ }
else
{
Filter filter = manager.getFilter(nextFilter);
filter.decode(is, os, stream, i);
+ IOUtils.closeQuietly(is);
is = new ByteArrayInputStream(os.toByteArray());
+ os.reset();
}
}
return is;
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java?rev=1567409&r1=1567408&r2=1567409&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java Tue Feb 11 21:53:01 2014
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdmodel.font;
import java.awt.Font;
import java.awt.FontFormatException;
import java.io.IOException;
+import java.io.InputStream;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -108,7 +109,9 @@ public class PDCIDFontType2Font extends
COSStream stream = (COSStream)map;
try
{
- byte[] mapAsBytes = IOUtils.toByteArray(stream.getUnfilteredStream());
+ InputStream is = stream.getUnfilteredStream();
+ byte[] mapAsBytes = IOUtils.toByteArray(is);
+ IOUtils.closeQuietly(is);
int numberOfInts = mapAsBytes.length / 2;
cid2gid = new int[numberOfInts];
int offset = 0;
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=1567409&r1=1567408&r2=1567409&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Tue Feb 11 21:53:01 2014
@@ -47,6 +47,7 @@ import org.apache.pdfbox.encoding.Encodi
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
+import static org.apache.pdfbox.pdmodel.font.PDFont.resourceRootCMAP;
import org.apache.pdfbox.util.ResourceLoader;
/**
@@ -404,7 +405,9 @@ public abstract class PDSimpleFont exten
COSStream encodingStream = (COSStream)encoding;
try
{
- cmap = parseCmap( null, encodingStream.getUnfilteredStream() );
+ InputStream is = encodingStream.getUnfilteredStream();
+ cmap = parseCmap(null, is);
+ IOUtils.closeQuietly(is);
}
catch(IOException exception)
{
@@ -470,7 +473,9 @@ public abstract class PDSimpleFont exten
{
try
{
- toUnicodeCmap = parseCmap( resourceRootCMAP, ((COSStream)toUnicode).getUnfilteredStream());
+ InputStream is = ((COSStream) toUnicode).getUnfilteredStream();
+ toUnicodeCmap = parseCmap(resourceRootCMAP, is);
+ IOUtils.closeQuietly(is);
}
catch(IOException exception)
{
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java?rev=1567409&r1=1567408&r2=1567409&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java Tue Feb 11 21:53:01 2014
@@ -44,6 +44,7 @@ import javax.imageio.stream.ImageInputSt
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.pdmodel.common.function.PDFunction;
@@ -299,11 +300,12 @@ public class PDJpeg extends PDXObjectIma
{
InputStream data = getPDStream().getPartiallyFilteredStream( DCT_FILTERS );
byte[] buf = new byte[1024];
- int amountRead = -1;
+ int amountRead;
while( (amountRead = data.read( buf )) != -1 )
{
out.write( buf, 0, amountRead );
}
+ IOUtils.closeQuietly(data);
}
private int getHeaderEndPos(byte[] imageAsBytes)