You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by tb...@apache.org on 2012/05/24 15:05:26 UTC

svn commit: r1342242 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: ExtractText.java pdmodel/common/PDNameTreeNode.java

Author: tboehme
Date: Thu May 24 13:05:25 2012
New Revision: 1342242

URL: http://svn.apache.org/viewvc?rev=1342242&view=rev
Log:
PDFBOX-1320: document possible null return value in PDNameTreeNode.getValue and check return value in ExtractText

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractText.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractText.java?rev=1342242&r1=1342241&r2=1342242&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractText.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/ExtractText.java Thu May 24 13:05:25 2012
@@ -281,37 +281,40 @@ public class ExtractText
                     PDEmbeddedFilesNameTreeNode embeddedFiles = names.getEmbeddedFiles();
                     if (embeddedFiles != null)
                     {
-                        for (Map.Entry<String,Object> ent : embeddedFiles.getNames().entrySet()) 
-                        {
-                            if (debug)
-                            {
-                                System.err.println("Processing embedded file " + ent.getKey() + ":");
-                            }
-                            PDComplexFileSpecification spec = (PDComplexFileSpecification) ent.getValue();
-                            PDEmbeddedFile file = spec.getEmbeddedFile();
-                            if (file.getSubtype().equals("application/pdf")) 
+                        Map<String,Object> embeddedFileNames = embeddedFiles.getNames();
+                        if (embeddedFileNames != null) {
+                            for (Map.Entry<String,Object> ent : embeddedFileNames.entrySet()) 
                             {
                                 if (debug)
                                 {
-                                    System.err.println("  is PDF (size=" + file.getSize() + ")");
+                                    System.err.println("Processing embedded file " + ent.getKey() + ":");
                                 }
-                                InputStream fis = file.createInputStream();
-                                PDDocument subDoc = null;
-                                try 
-                                {
-                                    subDoc = PDDocument.load(fis);
-                                } 
-                                finally 
-                                {
-                                    fis.close();
-                                }
-                                try 
-                                {
-                                    stripper.writeText( subDoc, output );
-                                } 
-                                finally 
+                                PDComplexFileSpecification spec = (PDComplexFileSpecification) ent.getValue();
+                                PDEmbeddedFile file = spec.getEmbeddedFile();
+                                if (file.getSubtype().equals("application/pdf")) 
                                 {
-                                    subDoc.close();
+                                    if (debug)
+                                    {
+                                        System.err.println("  is PDF (size=" + file.getSize() + ")");
+                                    }
+                                    InputStream fis = file.createInputStream();
+                                    PDDocument subDoc = null;
+                                    try 
+                                    {
+                                        subDoc = PDDocument.load(fis);
+                                    } 
+                                    finally 
+                                    {
+                                        fis.close();
+                                    }
+                                    try 
+                                    {
+                                        stripper.writeText( subDoc, output );
+                                    } 
+                                    finally 
+                                    {
+                                        subDoc.close();
+                                    }
                                 }
                             } 
                         }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java?rev=1342242&r1=1342241&r2=1342242&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java Thu May 24 13:05:25 2012
@@ -175,7 +175,8 @@ public class PDNameTreeNode implements C
      * This will return a map of names. The key will be a string, and the
      * value will depend on where this class is being used.
      *
-     * @return ordered map of cos objects
+     * @return ordered map of cos objects or <code>null</code> if dictionary
+     *         contains no 'Names' entry
      * @throws IOException If there is an error while creating the sub types.
      */
     public Map<String, Object> getNames() throws IOException