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!