You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/07/19 14:28:09 UTC

svn commit: r1611905 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox: pdmodel/font/PDFontFactory.java util/operator/SetTextFont.java

Author: tilman
Date: Sat Jul 19 12:28:09 2014
New Revision: 1611905

URL: http://svn.apache.org/r1611905
Log:
PDFBOX-2222: create a default font if font doesn't exist

Modified:
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetTextFont.java

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java?rev=1611905&r1=1611904&r2=1611905&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java Sat Jul 19 12:28:09 2014
@@ -124,4 +124,19 @@ public class PDFontFactory
         }
         return retval;
     }
+
+    /**
+     * Create a default font
+     * 
+     * @return a default font
+     * @throws IOException if something goes wrong
+     */
+    public static PDFont createDefaultFont() throws IOException
+    {
+        COSDictionary dict = new COSDictionary();
+        dict.setItem(COSName.TYPE, COSName.FONT);
+        dict.setItem (COSName.SUBTYPE, COSName.TYPE1);
+        dict.setString(COSName.BASE_FONT, "Arial");
+        return createFont(dict);
+    }
 }

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetTextFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetTextFont.java?rev=1611905&r1=1611904&r2=1611905&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetTextFont.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetTextFont.java Sat Jul 19 12:28:09 2014
@@ -25,6 +25,9 @@ import org.apache.pdfbox.pdmodel.font.PD
 import org.apache.pdfbox.util.PDFOperator;
 
 import java.io.IOException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.pdfbox.pdmodel.font.PDFontFactory;
 
 /**
  * @author Huault : huault@free.fr
@@ -33,6 +36,8 @@ import java.io.IOException;
 
 public class SetTextFont extends OperatorProcessor
 {
+    private static final Log LOG = LogFactory.getLog(SetTextFont.class);
+    
     /**
      * Tf selectfont Set text font and size.
      * @param operator The operator that is being executed.
@@ -51,11 +56,13 @@ public class SetTextFont extends Operato
             float fontSize = ((COSNumber)arguments.get( 1 ) ).floatValue();
             context.getGraphicsState().getTextState().setFontSize( fontSize );
 
-            context.getGraphicsState().getTextState().setFont( (PDFont)context.getFonts().get( fontName.getName() ) );
-            if( context.getGraphicsState().getTextState().getFont() == null )
+            PDFont font = (PDFont) context.getFonts().get(fontName.getName());
+            if( font == null )
             {
-                throw new IOException( "Error: Could not find font(" + fontName + ") in map=" + context.getFonts() );
+                LOG.error("Could not find font(" + fontName + ") in map=" + context.getFonts() + ", creating default font");
+                font = PDFontFactory.createDefaultFont();
             }
+            context.getGraphicsState().getTextState().setFont(font);
         }
     }