You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Tilman Hausherr (JIRA)" <ji...@apache.org> on 2017/06/11 13:39:18 UTC

[jira] [Created] (PDFBOX-3826) NPE if RAFDataStream.getCurrentPosition() when TrueTypeFont created from file is reused

Tilman Hausherr created PDFBOX-3826:
---------------------------------------

             Summary: NPE if RAFDataStream.getCurrentPosition() when TrueTypeFont created from file is reused
                 Key: PDFBOX-3826
                 URL: https://issues.apache.org/jira/browse/PDFBOX-3826
             Project: PDFBox
          Issue Type: Bug
          Components: FontBox
    Affects Versions: 2.0.6
            Reporter: Tilman Hausherr


{code}
java.lang.NullPointerException: null
	at org.apache.fontbox.ttf.RAFDataStream.getCurrentPosition(RAFDataStream.java:88)
	at org.apache.fontbox.ttf.TrueTypeFont.getTableBytes(TrueTypeFont.java:121)
	at org.apache.fontbox.ttf.TTFSubsetter.writeToStream(TTFSubsetter.java:1012)
	at org.apache.pdfbox.pdmodel.font.TrueTypeEmbedder.subset(TrueTypeEmbedder.java:329)
	at org.apache.pdfbox.pdmodel.font.PDType0Font.subset(PDType0Font.java:162)
	at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1275)
	at org.apache.pdfbox.pdmodel.font.PDFontTest.testMultipleFontFileReuse(PDFontTest.java:160)
{code}
{code}
    @Test
    public void testMultipleFontFileReuse() throws IOException, URISyntaxException
    {
        URL url = PDFontTest.class.getClassLoader().getResource(
                "org/apache/pdfbox/ttf/LiberationSans-Regular.ttf");
        File file = new File(url.toURI());

        TrueTypeFont ttf = new TTFParser().parse(file);

        for (int i = 0; i < 32; ++i)
        {
            try (PDDocument doc = new PDDocument())
            {
                PDPage page = new PDPage();
                doc.addPage(page);
                PDFont font = PDType0Font.load(doc, ttf, true);
                try (PDPageContentStream cs = new PDPageContentStream(doc, page))
                {
                    cs.beginText();
                    cs.setFont(font, 10);
                    cs.showText("testMultipleFontFileReuse");
                    cs.endText();
                }
                doc.save(new ByteArrayOutputStream());
            }
        }
    }
{code}
This happens only if the TrueTypeFont is created from a file, not when it is created from a stream (PDFBOX-3337). It worked in 2.0.0 but no longer since 2.0.1.




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org