You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2015/07/15 21:52:45 UTC

svn commit: r1691262 - in /pdfbox/trunk: pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapper.java preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java

Author: jahewson
Date: Wed Jul 15 19:52:44 2015
New Revision: 1691262

URL: http://svn.apache.org/r1691262
Log:
PDFBOX-2884: Handle invalid font dictionaries

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapper.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapper.java?rev=1691262&r1=1691261&r2=1691262&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapper.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapper.java Wed Jul 15 19:52:44 2015
@@ -402,6 +402,12 @@ final class FontMapper
      */
     private static FontBoxFont findFont(FontFormat format, String postScriptName)
     {
+        // handle damaged PDFs, see PDFBOX-2884
+        if (postScriptName == null)
+        {
+            return null;
+        }
+        
         // make sure the font provider is initialized
         if (fontProvider == null)
         {

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java?rev=1691262&r1=1691261&r2=1691262&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java Wed Jul 15 19:52:44 2015
@@ -21,16 +21,11 @@
 
 package org.apache.pdfbox.preflight.content;
 
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_ENCODING_ERROR;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_UNKNOWN_FONT_REF;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_CONTENT_STREAM_UNSUPPORTED_OP;
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
-
+import org.apache.pdfbox.contentstream.operator.Operator;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSFloat;
@@ -48,7 +43,12 @@ import org.apache.pdfbox.preflight.Valid
 import org.apache.pdfbox.preflight.exception.ValidationException;
 import org.apache.pdfbox.preflight.font.container.FontContainer;
 import org.apache.pdfbox.preflight.font.util.GlyphException;
-import org.apache.pdfbox.contentstream.operator.Operator;
+
+
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_ENCODING_ERROR;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_UNKNOWN_FONT_REF;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_CONTENT_STREAM_UNSUPPORTED_OP;
 
 public class PreflightContentStream extends PreflightStreamEngine
 {
@@ -297,7 +297,7 @@ public class PreflightContentStream exte
         if (font == null)
         {
             // Unable to decode the Text without Font
-            registerError("Text operator can't be process without Font", ERROR_FONTS_UNKNOWN_FONT_REF);
+            registerError("Text operator can't be processed without a Font", ERROR_FONTS_UNKNOWN_FONT_REF);
             return;
         }
 
@@ -310,8 +310,14 @@ public class PreflightContentStream exte
         else if (fontContainer == null)
         {
             // Font Must be embedded if the RenderingMode isn't 3
-            registerError(font.getName() + " is unknown wasn't found by the FontHelperValidator",
-                    ERROR_FONTS_UNKNOWN_FONT_REF);
+            if (font.getName() == null)
+            {
+                registerError("invalid font dictionary", ERROR_FONTS_UNKNOWN_FONT_REF);
+            }
+            else
+            {
+                registerError("font '" + font.getName() + "' is missing", ERROR_FONTS_UNKNOWN_FONT_REF);
+            }
             return;
         }
         else if (!fontContainer.isValid() && !fontContainer.errorsAleadyMerged())