Author: leleueri
Date: Wed Jun  5 20:09:04 2013
New Revision: 1490022

URL: http://svn.apache.org/r1490022
Log:
[PDFBox-1627] Fix NullPointer on Page thumbnail. Now the PDXObjectImage has a 
createThumbnailXObject method that uses the same method as the createXObject 
method in the PDXObject.

Modified:
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObject.java
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObject.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObject.java?rev=1490022&r1=1490021&r2=1490022&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObject.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObject.java
 Wed Jun  5 20:09:04 2013
@@ -119,6 +119,20 @@ public abstract class PDXObject implemen
      */
     public static PDXObject createXObject( COSBase xobject ) throws IOException
     {
+        PDXObject retval = commonXObjectCreation(xobject, false);
+        return retval;
+    }
+
+    /**
+     * Create the correct xobject from the cos base.
+     *
+     * @param xobject The cos level xobject to create.
+     * @param isthumb specify if the xobject represent a Thumbnail Image (in 
this case, the subtype null must be considered as an Image)
+     * @return a pdmodel xobject
+     * @throws IOException If there is an error creating the xobject.
+     */
+    protected static PDXObject commonXObjectCreation(COSBase xobject, boolean 
isThumb)
+    {
         PDXObject retval = null;
         if( xobject == null )
         {
@@ -128,7 +142,8 @@ public abstract class PDXObject implemen
         {
             COSStream xstream = (COSStream)xobject;
             String subtype = xstream.getNameAsString( COSName.SUBTYPE );
-            if( subtype.equals( PDXObjectImage.SUB_TYPE ) )
+            // according to the PDF Reference : a thumbnail subtype must be 
Image if it is not null
+            if( PDXObjectImage.SUB_TYPE.equals( subtype ) || (subtype == null 
&& isThumb))
             {
                 PDStream image = new PDStream( xstream );
                 // See if filters are DCT or JPX otherwise treat as Bitmap-like
@@ -157,7 +172,7 @@ public abstract class PDXObject implemen
                     retval = new PDPixelMap(image);
                 }
             }
-            else if( subtype.equals( PDXObjectForm.SUB_TYPE ) )
+            else if( PDXObjectForm.SUB_TYPE.equals( subtype ) )
             {
                 retval = new PDXObjectForm( xstream );
             }

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java?rev=1490022&r1=1490021&r2=1490022&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
 Wed Jun  5 20:09:04 2013
@@ -91,6 +91,20 @@ public abstract class PDXObjectImage ext
     }
 
     /**
+     * Create the correct thumbnail from the cos base.
+     *
+     * @param xobject The cos level xobject to create.
+     *
+     * @return a pdmodel xobject
+     * @throws IOException If there is an error creating the xobject.
+     */
+    public static PDXObject createThumbnailXObject( COSBase xobject ) throws 
IOException
+    {
+        PDXObject retval = commonXObjectCreation(xobject, true);
+        return retval;
+    }
+    
+    /**
      * Returns an java.awt.Image, that can be used for display etc.
      *
      * @return This PDF object as an AWT image.


Reply via email to