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)