You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by Juan Carlos Castilla <ju...@datisa.es> on 2013/04/05 13:26:30 UTC

Error when using monospaced Fonts

Hi, I need to load some Ubuntu fonts in a PDF but I'm having problems when
trying to load monospaced ones. Using pdfbox-1.8.0, I wrote this snippet:

--------------------------------------------------------------------------------------------
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;

public class PDFTest
{

    public static void main (String [] args) throws IOException
    {
        PDDocument document = null;
        try
        {
            document = new PDDocument ();
            PDPage page = new PDPage ();
            document.addPage (page);
            PDFont font = PDTrueTypeFont.loadTTF (document,
                                                  "D:\\UbuntuMono-R.ttf");

            PDPageContentStream contentStream = new PDPageContentStream (

document,

page);
            contentStream.beginText ();
            contentStream.setFont (font, 12);
            contentStream.moveTextPositionByAmount (100, 700);
            contentStream.drawString ("Hello World");
            contentStream.endText ();
            contentStream.close ();
            document.save ("d:\\Hello World.pdf");
            document.close ();
        }
        catch (Exception e)
        {
            e.printStackTrace ();
        }
    }
}
--------------------------------------------------------------------------------------------

And here is the error I'm getting:

--------------------------------------------------------------------------------------------
java.lang.ArrayIndexOutOfBoundsException: 5
    at
org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadDescriptorDictionary(PDTrueTypeFont.java:409)
    at
org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:201)
    at
org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:177)
    at
org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:158)
    at
org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:145)
    at
org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:132)
    at es.datisa.informes.test.PDF.PDFTest.main(PDFTest.java:21)
--------------------------------------------------------------------------------------------

Trying with other monospaced (like DejaVuSansMono.ttf from windows fonts)
shows the same error. If I try with another Ubuntu Font (not mono)
everything is ok...

Any idea or suggestion?

Thanks!

Re: Error when using monospaced Fonts

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
Hi,

although PDFBOX-1335 fixed some of the loading issues there seems to be an issue with monospaced fonts as you correctly spotted. Could you cease an issue at [1] so we track that?

BR
Maruan Sahyoun

[1] https://issues.apache.org/jira/browse/PDFBOX


Am 05.04.2013 um 13:26 schrieb Juan Carlos Castilla <ju...@datisa.es>:

> Hi, I need to load some Ubuntu fonts in a PDF but I'm having problems when
> trying to load monospaced ones. Using pdfbox-1.8.0, I wrote this snippet:
> 
> --------------------------------------------------------------------------------------------
> import java.io.IOException;
> import org.apache.pdfbox.pdmodel.PDDocument;
> import org.apache.pdfbox.pdmodel.PDPage;
> import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
> import org.apache.pdfbox.pdmodel.font.PDFont;
> import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
> 
> public class PDFTest
> {
> 
>    public static void main (String [] args) throws IOException
>    {
>        PDDocument document = null;
>        try
>        {
>            document = new PDDocument ();
>            PDPage page = new PDPage ();
>            document.addPage (page);
>            PDFont font = PDTrueTypeFont.loadTTF (document,
>                                                  "D:\\UbuntuMono-R.ttf");
> 
>            PDPageContentStream contentStream = new PDPageContentStream (
> 
> document,
> 
> page);
>            contentStream.beginText ();
>            contentStream.setFont (font, 12);
>            contentStream.moveTextPositionByAmount (100, 700);
>            contentStream.drawString ("Hello World");
>            contentStream.endText ();
>            contentStream.close ();
>            document.save ("d:\\Hello World.pdf");
>            document.close ();
>        }
>        catch (Exception e)
>        {
>            e.printStackTrace ();
>        }
>    }
> }
> --------------------------------------------------------------------------------------------
> 
> And here is the error I'm getting:
> 
> --------------------------------------------------------------------------------------------
> java.lang.ArrayIndexOutOfBoundsException: 5
>    at
> org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadDescriptorDictionary(PDTrueTypeFont.java:409)
>    at
> org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:201)
>    at
> org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:177)
>    at
> org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:158)
>    at
> org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:145)
>    at
> org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:132)
>    at es.datisa.informes.test.PDF.PDFTest.main(PDFTest.java:21)
> --------------------------------------------------------------------------------------------
> 
> Trying with other monospaced (like DejaVuSansMono.ttf from windows fonts)
> shows the same error. If I try with another Ubuntu Font (not mono)
> everything is ok...
> 
> Any idea or suggestion?
> 
> Thanks!