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++;
}