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 2011/07/23 17:16:18 UTC

svn commit: r1150121 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: filter/JBIG2Filter.java pdmodel/graphics/xobject/PDPixelMap.java

Author: lehmi
Date: Sat Jul 23 15:16:17 2011
New Revision: 1150121

URL: http://svn.apache.org/viewvc?rev=1150121&view=rev
Log:
PDFBOX-1067: added an error message if the JBIG2 plugin couldn't be found or something went wrong when decoding the JBIG2 decoded datastream

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java?rev=1150121&r1=1150120&r2=1150121&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java Sat Jul 23 15:16:17 2011
@@ -22,8 +22,10 @@ import java.awt.image.DataBufferByte;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.Iterator;
 
 import javax.imageio.ImageIO;
+import javax.imageio.ImageReader;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -50,8 +52,8 @@ public class JBIG2Filter implements Filt
     public void decode( InputStream compressedData, OutputStream result, COSDictionary options, int filterIndex ) 
         throws IOException
     {
-        BufferedImage bi = ImageIO.read( compressedData );
-        if ( bi != null )
+    	BufferedImage bi = ImageIO.read(compressedData);
+    	if ( bi != null )
         {
             DataBuffer dBuf = bi.getData().getDataBuffer();
             if ( dBuf.getDataType() == DataBuffer.TYPE_BYTE )
@@ -63,6 +65,18 @@ public class JBIG2Filter implements Filt
                 log.error( "Image data buffer not of type byte but type " + dBuf.getDataType() );
             }
         }
+        else
+        {
+        	Iterator<ImageReader> reader = ImageIO.getImageReadersByFormatName("JBIG2");
+        	if (!reader.hasNext())
+        	{
+        		log.error( "Can't find an ImageIO plugin to decode the JBIG2 encoded datastream.");
+        	}
+        	else 
+        	{
+        		log.error( "Something went wrong when decoding the JBIG2 encoded datastream.");
+        	}
+        }
     }
 
      /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java?rev=1150121&r1=1150120&r2=1150121&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java Sat Jul 23 15:16:17 2011
@@ -135,7 +135,11 @@ public class PDPixelMap extends PDXObjec
             int bpc = getBitsPerComponent();
             
             byte[] array = getPDStream().getByteArray();
-    
+            if (array.length == 0) 
+            {
+                log.error("Something went wrong ... the pixelmap doesn't contain any data.");
+                return null;
+            }
             // Get the ColorModel right
             PDColorSpace colorspace = getColorSpace();
             if (colorspace == null)