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 2013/06/05 22:09:04 UTC

svn commit: r1490022 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject: PDXObject.java PDXObjectImage.java

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.