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 2014/09/22 03:27:05 UTC
svn commit: r1626656 - in /pdfbox/trunk:
fontbox/src/main/java/org/apache/fontbox/type1/DamagedFontException.java
fontbox/src/main/java/org/apache/fontbox/type1/Type1Lexer.java
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
Author: jahewson
Date: Mon Sep 22 01:27:05 2014
New Revision: 1626656
URL: http://svn.apache.org/r1626656
Log:
PDFBOX-2350: Correctly handle and warn about damaged Type 1 font streams
Added:
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/DamagedFontException.java
Modified:
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Lexer.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
Added: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/DamagedFontException.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/DamagedFontException.java?rev=1626656&view=auto
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/DamagedFontException.java (added)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/DamagedFontException.java Mon Sep 22 01:27:05 2014
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.fontbox.type1;
+
+import java.io.IOException;
+
+/**
+ * Thrown when a font is damaged and cannot be read.
+ *
+ * @author John Hewson
+ */
+public class DamagedFontException extends IOException
+{
+ public DamagedFontException(String message)
+ {
+ super(message);
+ }
+}
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Lexer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Lexer.java?rev=1626656&r1=1626655&r2=1626656&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Lexer.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Lexer.java Mon Sep 22 01:27:05 2014
@@ -165,6 +165,12 @@ class Type1Lexer
{
// otherwise this must be a name
String name = readRegular();
+ if (name == null)
+ {
+ // the stream is corrupt
+ throw new DamagedFontException("Could not read token at position " +
+ buffer.position());
+ }
if (name.equals("RD") || name.equals("-|"))
{
@@ -331,7 +337,12 @@ class Type1Lexer
sb.append(c);
}
}
- return sb.toString();
+ String regular = sb.toString();
+ if (regular.length() == 0)
+ {
+ return null;
+ }
+ return regular;
}
/**
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1626656&r1=1626655&r2=1626656&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Mon Sep 22 01:27:05 2014
@@ -30,6 +30,7 @@ import org.apache.commons.logging.LogFac
import org.apache.fontbox.afm.AFMParser;
import org.apache.fontbox.afm.FontMetrics;
import org.apache.fontbox.ttf.Type1Equivalent;
+import org.apache.fontbox.type1.DamagedFontException;
import org.apache.fontbox.type1.Type1Font;
import org.apache.fontbox.util.BoundingBox;
import org.apache.pdfbox.cos.COSDictionary;
@@ -221,6 +222,10 @@ public class PDType1Font extends PDSimpl
t1 = Type1Font.createWithSegments(segment1, segment2);
}
+ catch (DamagedFontException e)
+ {
+ LOG.warn("Can't read damaged embedded Type1 font " + fd.getFontName());
+ }
catch (IOException e)
{
LOG.error("Can't read the embedded Type1 font " + fd.getFontName(), e);