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 2020/12/16 11:24:59 UTC
svn commit: r1884497 - in /pdfbox/branches/2.0/pdfbox/src:
main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
Author: tilman
Date: Wed Dec 16 11:24:59 2020
New Revision: 1884497
URL: http://svn.apache.org/viewvc?rev=1884497&view=rev
Log:
PDFBOX-5048: avoid NullPointerException
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java?rev=1884497&r1=1884496&r2=1884497&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java Wed Dec 16 11:24:59 2020
@@ -299,7 +299,12 @@ public class PDType1CFont extends PDSimp
float height;
if (!glyphHeights.containsKey(name))
{
- height = (float)cffFont.getType1CharString(name).getBounds().getHeight(); // todo: cffFont could be null
+ if (cffFont == null)
+ {
+ LOG.warn("No embedded CFF font, returning 0");
+ return 0;
+ }
+ height = (float) cffFont.getType1CharString(name).getBounds().getHeight();
glyphHeights.put(name, height);
}
else
@@ -337,6 +342,11 @@ public class PDType1CFont extends PDSimp
@Override
public float getStringWidth(String string) throws IOException
{
+ if (cffFont == null)
+ {
+ LOG.warn("No embedded CFF font, returning 0");
+ return 0;
+ }
float width = 0;
for (int i = 0; i < string.length(); i++)
{
Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java?rev=1884497&r1=1884496&r2=1884497&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Wed Dec 16 11:24:59 2020
@@ -272,6 +272,25 @@ public class PDFontTest
Assert.fail("should have thrown IOException");
}
+ /**
+ * Test using broken Type1C font.
+ *
+ * @throws IOException
+ */
+ @Test
+ void testPDFox5048() throws IOException
+ {
+ InputStream is = new URL("https://issues.apache.org/jira/secure/attachment/13017227/stringwidth.pdf").openStream();
+ PDDocument doc = PDDocument.load(is);
+ PDPage page = doc.getPage(0);
+ PDFont font = page.getResources().getFont(COSName.getPDFName("F70"));
+ Assert.assertTrue(font.isDamaged());
+ Assert.assertEquals(0, font.getHeight(0));
+ Assert.assertEquals(0, font.getStringWidth("Pa"));
+ doc.close();
+ is.close();
+ }
+
private void testPDFBox3826checkFonts(byte[] byteArray, File fontFile) throws IOException
{
PDDocument doc = PDDocument.load(byteArray);