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/08/30 18:59:15 UTC

svn commit: r1621495 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font: ExternalFonts.java FileSystemFontProvider.java FontProvider.java

Author: jahewson
Date: Sat Aug 30 16:59:15 2014
New Revision: 1621495

URL: http://svn.apache.org/r1621495
Log:
PDFBOX-2262: Added logging for missing fallback fonts

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FileSystemFontProvider.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontProvider.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java?rev=1621495&r1=1621494&r2=1621495&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java Sat Aug 30 16:59:15 2014
@@ -23,6 +23,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.fontbox.cff.CFFCIDFont;
 import org.apache.fontbox.cff.CFFFont;
 import org.apache.fontbox.cff.CFFType1Font;
@@ -45,6 +47,7 @@ public final class ExternalFonts
         private static final FontProvider INSTANCE = new FileSystemFontProvider();
     }
 
+    private static final Log log = LogFactory.getLog(ExternalFonts.class);
     private static FontProvider fontProvider;
 
     /**
@@ -238,6 +241,12 @@ public final class ExternalFonts
         TrueTypeFont ttf = getTrueTypeFont(fontName);
         if (ttf == null)
         {
+            String message = fontProvider.toDebugString();
+            if (message != null)
+            {
+                log.error("No fallback font for '" + fontName + "', dumping debug information:");
+                log.error(message);
+            }
             throw new IllegalStateException("No fonts available on the system for " + fontName);
         }
         return ttf;

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FileSystemFontProvider.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FileSystemFontProvider.java?rev=1621495&r1=1621494&r2=1621495&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FileSystemFontProvider.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FileSystemFontProvider.java Sat Aug 30 16:59:15 2014
@@ -299,4 +299,35 @@ final class FileSystemFontProvider imple
         }
         return null;
     }
+
+    @Override
+    public String toDebugString()
+    {
+        StringBuilder sb = new StringBuilder();
+        for (Map.Entry<String, File> entry : ttfFontFiles.entrySet())
+        {
+            sb.append("TTF: ");
+            sb.append(entry.getKey());
+            sb.append(": ");
+            sb.append(entry.getValue().getPath());
+            sb.append('\n');
+        }
+        for (Map.Entry<String, File> entry : cffFontFiles.entrySet())
+        {
+            sb.append("OTF: ");
+            sb.append(entry.getKey());
+            sb.append(": ");
+            sb.append(entry.getValue().getPath());
+            sb.append('\n');
+        }
+        for (Map.Entry<String, File> entry : type1FontFiles.entrySet())
+        {
+            sb.append("PFB: ");
+            sb.append(entry.getKey());
+            sb.append(": ");
+            sb.append(entry.getValue().getPath());
+            sb.append('\n');
+        }
+        return sb.toString();
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontProvider.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontProvider.java?rev=1621495&r1=1621494&r2=1621495&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontProvider.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontProvider.java Sat Aug 30 16:59:15 2014
@@ -50,4 +50,10 @@ public interface FontProvider
      * @param postScriptName PostScript font name
      */
     public Type1Font getType1Font(String postScriptName);
+
+    /**
+     * Returns a string containing debugging information. This will be written to the log if no
+     * suitable fonts are found and no fallback fonts are available. May be null.
+     */
+    public String toDebugString();
 }