You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2014/01/01 16:48:06 UTC
svn commit: r1554632 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font:
PDCIDFont.java PDSimpleFont.java
Author: lehmi
Date: Wed Jan 1 15:48:05 2014
New Revision: 1554632
URL: http://svn.apache.org/r1554632
Log:
PDFBOX-940: avoid false error messages when reading a CMap based on a proposal by Wolfgang Kronberg
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java?rev=1554632&r1=1554631&r2=1554632&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java Wed Jan 1 15:48:05 2014
@@ -17,6 +17,7 @@
package org.apache.pdfbox.pdmodel.font;
import java.io.IOException;
+import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
@@ -27,6 +28,7 @@ import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSNumber;
+import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.util.ResourceLoader;
@@ -324,19 +326,32 @@ public abstract class PDCIDFont extends
cmap = cmapObjects.get(cidSystemInfo);
if (cmap == null)
{
- String resourceName = resourceRootCMAP + cidSystemInfo;
+ InputStream cmapStream = null;
try
{
- cmap = parseCmap(resourceRootCMAP, ResourceLoader.loadResource(resourceName));
- if (cmap == null)
+ // look for a predefined CMap with the given name
+ cmapStream = ResourceLoader.loadResource(resourceRootCMAP + cidSystemInfo);
+ if (cmapStream != null)
{
- LOG.error("Error: Could not parse predefined CMAP file for '" + cidSystemInfo + "'");
+ cmap = parseCmap(resourceRootCMAP, cmapStream);
+ if (cmap == null)
+ {
+ LOG.error("Error: Could not parse predefined CMAP file for '" + cidSystemInfo + "'");
+ }
+ }
+ else
+ {
+ LOG.debug("Debug: '" + cidSystemInfo + "' isn't a predefined CMap, most likely it's embedded in the pdf itself.");
}
}
catch (IOException exception)
{
LOG.error("Error: Could not find predefined CMAP file for '" + cidSystemInfo + "'");
}
+ finally
+ {
+ IOUtils.closeQuietly(cmapStream);
+ }
}
}
else
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=1554632&r1=1554631&r2=1554632&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Wed Jan 1 15:48:05 2014
@@ -17,6 +17,7 @@
package org.apache.pdfbox.pdmodel.font;
import java.io.IOException;
+import java.io.InputStream;
import java.util.HashMap;
import org.apache.commons.logging.Log;
@@ -31,6 +32,7 @@ import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.encoding.DictionaryEncoding;
import org.apache.pdfbox.encoding.Encoding;
import org.apache.pdfbox.encoding.EncodingManager;
+import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.util.ResourceLoader;
@@ -308,19 +310,32 @@ public abstract class PDSimpleFont exten
if (cmap == null && cmapName != null)
{
- String resourceName = resourceRootCMAP + cmapName;
+ InputStream cmapStream = null;
try
{
- cmap = parseCmap(resourceRootCMAP, ResourceLoader.loadResource(resourceName));
- if (cmap == null && encodingName == null)
+ // look for a predefined CMap with the given name
+ cmapStream = ResourceLoader.loadResource(resourceRootCMAP + cmapName);
+ if (cmapStream != null)
+ {
+ cmap = parseCmap(resourceRootCMAP, cmapStream);
+ if (cmap == null && encodingName == null)
+ {
+ LOG.error("Error: Could not parse predefined CMAP file for '" + cmapName + "'");
+ }
+ }
+ else
{
- LOG.error("Error: Could not parse predefined CMAP file for '" + cmapName + "'");
+ LOG.debug("Debug: '" + cmapName + "' isn't a predefined map, most likely it's embedded in the pdf itself.");
}
}
catch (IOException exception)
{
LOG.error("Error: Could not find predefined CMAP file for '" + cmapName + "'");
}
+ finally
+ {
+ IOUtils.closeQuietly(cmapStream);
+ }
}
}