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:55 UTC
svn commit: r1884496 - in /pdfbox/trunk/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:55 2020
New Revision: 1884496
URL: http://svn.apache.org/viewvc?rev=1884496&view=rev
Log:
PDFBOX-5048: avoid NullPointerException
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java?rev=1884496&r1=1884495&r2=1884496&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1CFont.java Wed Dec 16 11:24:55 2020
@@ -321,7 +321,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
@@ -359,6 +364,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/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java?rev=1884496&r1=1884495&r2=1884496&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Wed Dec 16 11:24:55 2020
@@ -248,6 +248,25 @@ class PDFontTest
assertEquals("Full embedding of TrueType font collections not supported", ex.getMessage());
}
+ /**
+ * Test using broken Type1C font.
+ *
+ * @throws IOException
+ */
+ @Test
+ void testPDFox5048() throws IOException
+ {
+ try (InputStream is = new URL("https://issues.apache.org/jira/secure/attachment/13017227/stringwidth.pdf").openStream();
+ PDDocument doc = Loader.loadPDF(is))
+ {
+ PDPage page = doc.getPage(0);
+ PDFont font = page.getResources().getFont(COSName.getPDFName("F70"));
+ assertTrue(font.isDamaged());
+ assertEquals(0, font.getHeight(0));
+ assertEquals(0, font.getStringWidth("Pa"));
+ }
+ }
+
private void testPDFBox3826checkFonts(byte[] byteArray, File fontFile) throws IOException
{
try (PDDocument doc = Loader.loadPDF(byteArray))