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/12/01 10:53:04 UTC
svn commit: r1209017 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractImages.java
Author: lehmi
Date: Thu Dec 1 09:53:04 2011
New Revision: 1209017
URL: http://svn.apache.org/viewvc?rev=1209017&view=rev
Log:
PDFBOX-1169: iterate recursively over the resources to extract images which are embedded in a XObjectForm
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractImages.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractImages.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractImages.java?rev=1209017&r1=1209016&r2=1209017&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractImages.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractImages.java Thu Dec 1 09:53:04 2011
@@ -148,24 +148,6 @@ public class ExtractImages
PDResources resources = page.getResources();
// extract all XObjectImages which are part of the page resources
processResources(resources, prefix, addKey);
- Map<String, PDXObject> xObjects = resources.getXObjects();
- if( xObjects != null )
- {
- Iterator<String> xObjectsIter = xObjects.keySet().iterator();
- while( xObjectsIter.hasNext() )
- {
- String key = xObjectsIter.next();
- PDXObject xObject = xObjects.get( key );
- // an XObjectForm may contain further XObjectImages
- if (xObject instanceof PDXObjectForm)
- {
- PDXObjectForm xObjectForm = (PDXObjectForm)xObject;
- PDResources formResources = xObjectForm.getResources();
- processResources(formResources, prefix, addKey);
- }
- }
- }
-
}
}
finally
@@ -181,25 +163,37 @@ public class ExtractImages
private void processResources(PDResources resources, String prefix, boolean addKey) throws IOException
{
- Map<String, PDXObjectImage> images = resources.getImages();
- if( images != null )
+ Map<String, PDXObject> xobjects = resources.getXObjects();
+ if( xobjects != null )
{
- Iterator<String> imageIter = images.keySet().iterator();
- while( imageIter.hasNext() )
+ Iterator<String> xobjectIter = xobjects.keySet().iterator();
+ while( xobjectIter.hasNext() )
{
- String key = imageIter.next();
- PDXObjectImage image = images.get( key );
- String name = null;
- if (addKey)
+ String key = xobjectIter.next();
+ PDXObject xobject = xobjects.get( key );
+ // write the images
+ if (xobject instanceof PDXObjectImage)
{
- name = getUniqueFileName( prefix + "_" + key, image.getSuffix() );
+ PDXObjectImage image = (PDXObjectImage)xobject;
+ String name = null;
+ if (addKey)
+ {
+ name = getUniqueFileName( prefix + "_" + key, image.getSuffix() );
+ }
+ else
+ {
+ name = getUniqueFileName( prefix, image.getSuffix() );
+ }
+ System.out.println( "Writing image:" + name );
+ image.write2file( name );
}
- else
+ // maybe there are more images embedded in a form object
+ else if (xobject instanceof PDXObjectForm)
{
- name = getUniqueFileName( prefix, image.getSuffix() );
+ PDXObjectForm xObjectForm = (PDXObjectForm)xobject;
+ PDResources formResources = xObjectForm.getResources();
+ processResources(formResources, prefix, addKey);
}
- System.out.println( "Writing image:" + name );
- image.write2file( name );
}
}
}