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())