Author: leleueri
Date: Thu Nov  8 21:52:33 2012
New Revision: 1407284

URL: http://svn.apache.org/viewvc?rev=1407284&view=rev
Log:
[https://issues.apache.org/jira/browse/PDFBOX-1434] Use addFont() instead of 
the getFonts().put() on PDResource to specify a fond in the Appearance stream 

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/MapUtil.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java?rev=1407284&r1=1407283&r2=1407284&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java 
Thu Nov  8 21:52:33 2012
@@ -50,7 +50,7 @@ public class PDResources implements COSO
 {
     private COSDictionary resources;
     private Map<String,PDFont> fonts = null;
-    private Map<PDFont, String> fontMappings = null;
+    private Map<PDFont, String> fontMappings = new HashMap<PDFont, String>();
     private Map<String,PDColorSpace> colorspaces = null;
     private Map<String,PDXObject> xobjects = null;
     private Map<PDXObject,String> xobjectMappings = null;
@@ -200,7 +200,7 @@ public class PDResources implements COSO
         }
         return fonts;
     }
-
+    
     /**
      * This will get the map of PDXObjects that are in the resource dictionary.
      * This will never return null.
@@ -513,23 +513,29 @@ public class PDResources implements COSO
      */
     public String addFont(PDFont font) 
     {
+        return addFont(font, MapUtil.getNextUniqueKey( fonts, "F" ));
+    }
+
+    public String addFont(PDFont font, String fontKey) 
+    {
         if (fonts == null) 
         {
             fonts = getFonts();
             fontMappings = reverseMap(fonts, PDFont.class);
             setFonts(fonts);
         }
+        
         String fontMapping = fontMappings.get( font );
         if( fontMapping == null )
         {
-            fontMapping = MapUtil.getNextUniqueKey( fonts, "F" );
+                       fontMapping = fontKey;
             fontMappings.put( font, fontMapping );
             fonts.put( fontMapping, font );
             addFontToDictionary(font, fontMapping);
         }
         return fontMapping;
     }
-
+    
     private void addFontToDictionary(PDFont font, String fontName)
     {
         COSDictionary fontsDictionary = 
(COSDictionary)resources.getDictionaryObject(COSName.FONT);

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java?rev=1407284&r1=1407283&r2=1407284&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java
 Thu Nov  8 21:52:33 2012
@@ -437,7 +437,7 @@ public class PDAppearance
             if( retval == null )
             {
                 retval = (PDFont)formResources.getFonts().get( fontName );
-                streamResources.getFonts().put( fontName, retval );
+                streamResources.addFont(retval, fontName);
             }
         }
         return retval;

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/MapUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/MapUtil.java?rev=1407284&r1=1407283&r2=1407284&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/MapUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/MapUtil.java Thu 
Nov  8 21:52:33 2012
@@ -42,7 +42,7 @@ public class MapUtil
     public static final String getNextUniqueKey( Map map, String prefix )
     {
         int counter = 0;
-        while( map.get( prefix+counter ) != null )
+        while( map != null && map.get( prefix+counter ) != null )
         {
             counter++;
         }


Reply via email to