You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by Johanneke Lamberink <jo...@onior.com> on 2015/05/27 10:52:14 UTC

IllegalArgumentException when using PDType1Font.HELVETICA

Hi,

When writing a given String to a PDF I am encountering the following stacktraces in the logging:


Caused by: java.lang.IllegalArgumentException: No glyph for U+000A in font Helvetica
        at org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:320)
        at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
        at org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:358)

and:



Caused by: java.lang.IllegalArgumentException: This font type only supports 8-bit code points
        at org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:311)
        at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
        at org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:311)

I am not sure if this is a problem in my choice of font, my use of the api, or the encoding done by pdfbox.

Can anyone explain to me what it is that is going wrong here?

Thanks :)


Johanneke Lamberink

Re: IllegalArgumentException when using PDType1Font.HELVETICA

Posted by John Hewson <jo...@jahewson.com>.
> On 28 May 2015, at 03:38, Johanneke Lamberink <jo...@onior.com> wrote:
> 
> Thanks for explaining!
> 
> Using a Helvetica.ttf file I was able to solve the error about 8-bit code
> points. Apparently the PDType1Font.HELVETICA does not include all
> characters that are supported by Helvectica.

That's right, in PDF you're always accessing a font via an Encoding, which is typically smaller than the font itself and usually pre-dates Unicode.

> The new line is now handled before calling showText().

Great!

-- John

> Johanneke Lamberink
> 
> 
> 
> 
> 
> Op 28/5/15 01:05 schreef John Hewson <jo...@jahewson.com>:
> 
>> 
>>> On 27 May 2015, at 03:38, Johanneke Lamberink
>>> <jo...@onior.com> wrote:
>>> 
>>> Hi,
>>> 
>>> The string with the U+000A (LF) is retrieved by calling
>>> PDAnnotation.getContents().
>>> I expected to be able to use the String returned by that method in
>>> PDPageContentStream.showText(), but apparently that is not the case.
>>> 
>>> Thanks.
>> 
>> If there¹s an appearance stream (AP) for the field then that will take
>> precedence over the
>> Contents. If there¹s not, then it¹s always possible that the Contents is
>> using glyphs which
>> are missing in the font. PDF doesn¹t understand newlines anyway, so an LF
>> character in
>> the text would need to be handled at some higher level than showText().
>> Indeed, LF is not
>> even present in WinAnsiEncoding which is why you¹re seeing an error when
>> using
>> PDType1Font.HELVETICA.
>> 
>> ‹ John
>> 
>>> 
>>> Johanneke Lamberink
>>> 
>>> Onior Group B.V.
>>> Jan Pieterszoon Coenstraat  7
>>> 2595 WP Den Haag
>>> The Netherlands
>>> Office: +31 70 799 94 85     Mobile: + 31 6 23 76 76 45
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> Op 27/5/15 12:28 schreef Andreas Lehmkühler <an...@lehmi.de>:
>>> 
>>>> Hi,
>>>> 
>>>>> Johanneke Lamberink <jo...@onior.com> hat am 27. Mai
>>>>> 2015
>>>>> um
>>>>> 10:52 geschrieben:
>>>>> 
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> When writing a given String to a PDF I am encountering the following
>>>>> stacktraces in the logging:
>>>>> 
>>>>> 
>>>>> Caused by: java.lang.IllegalArgumentException: No glyph for U+000A in
>>>>> font
>>>>> Helvetica
>>>>>       at
>>>>> 
>>>>> org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:320)
>>>>>       at 
>>>>> org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>>>>>       at
>>>>> 
>>>>> 
>>>>> org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStr
>>>>> ea
>>>>> m.java:358)
>>>>> 
>>>>> and:
>>>>> 
>>>>> 
>>>>> 
>>>>> Caused by: java.lang.IllegalArgumentException: This font type only
>>>>> supports
>>>>> 8-bit code points
>>>>>       at
>>>>> 
>>>>> org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:311)
>>>>>       at 
>>>>> org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>>>>>       at
>>>>> org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:311)
>>>>> 
>>>>> I am not sure if this is a problem in my choice of font, my use of the
>>>>> api, or
>>>>> the encoding done by pdfbox.
>>>>> 
>>>>> Can anyone explain to me what it is that is going wrong here?
>>>> U+000A sounds like line feed. Does your string contain any newline
>>>> characters
>>>> like CR or LF? You have to remove those, as you have to manage line
>>>> breaks
>>>> yourself.
>>>> 
>>>>> Thanks :)
>>>>> 
>>>>> 
>>>>> Johanneke Lamberink
>>>> 
>>>> BR
>>>> Andreas Lehmkühler
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>>>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>>> For additional commands, e-mail: users-help@pdfbox.apache.org
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>> For additional commands, e-mail: users-help@pdfbox.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
> 

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


Re: IllegalArgumentException when using PDType1Font.HELVETICA

Posted by Johanneke Lamberink <jo...@onior.com>.
Thanks for explaining!

Using a Helvetica.ttf file I was able to solve the error about 8-bit code
points. Apparently the PDType1Font.HELVETICA does not include all
characters that are supported by Helvectica.
The new line is now handled before calling showText().


Johanneke Lamberink





Op 28/5/15 01:05 schreef John Hewson <jo...@jahewson.com>:

>
>> On 27 May 2015, at 03:38, Johanneke Lamberink
>><jo...@onior.com> wrote:
>> 
>> Hi,
>> 
>> The string with the U+000A (LF) is retrieved by calling
>> PDAnnotation.getContents().
>> I expected to be able to use the String returned by that method in
>> PDPageContentStream.showText(), but apparently that is not the case.
>> 
>> Thanks.
>
>If there¹s an appearance stream (AP) for the field then that will take
>precedence over the
>Contents. If there¹s not, then it¹s always possible that the Contents is
>using glyphs which
>are missing in the font. PDF doesn¹t understand newlines anyway, so an LF
>character in
>the text would need to be handled at some higher level than showText().
>Indeed, LF is not
>even present in WinAnsiEncoding which is why you¹re seeing an error when
>using
>PDType1Font.HELVETICA.
>
>‹ John
>
>> 
>> Johanneke Lamberink
>> 
>> Onior Group B.V.
>> Jan Pieterszoon Coenstraat  7
>> 2595 WP Den Haag
>> The Netherlands
>> Office: +31 70 799 94 85     Mobile: + 31 6 23 76 76 45
>> 
>> 
>> 
>> 
>> 
>> 
>> Op 27/5/15 12:28 schreef Andreas Lehmkühler <an...@lehmi.de>:
>> 
>>> Hi,
>>> 
>>>> Johanneke Lamberink <jo...@onior.com> hat am 27. Mai
>>>>2015
>>>> um
>>>> 10:52 geschrieben:
>>>> 
>>>> 
>>>> Hi,
>>>> 
>>>> When writing a given String to a PDF I am encountering the following
>>>> stacktraces in the logging:
>>>> 
>>>> 
>>>> Caused by: java.lang.IllegalArgumentException: No glyph for U+000A in
>>>> font
>>>> Helvetica
>>>>        at
>>>> 
>>>>org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:320)
>>>>        at 
>>>>org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>>>>        at
>>>> 
>>>> 
>>>>org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStr
>>>>ea
>>>> m.java:358)
>>>> 
>>>> and:
>>>> 
>>>> 
>>>> 
>>>> Caused by: java.lang.IllegalArgumentException: This font type only
>>>> supports
>>>> 8-bit code points
>>>>        at
>>>> 
>>>>org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:311)
>>>>        at 
>>>>org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>>>>        at
>>>> org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:311)
>>>> 
>>>> I am not sure if this is a problem in my choice of font, my use of the
>>>> api, or
>>>> the encoding done by pdfbox.
>>>> 
>>>> Can anyone explain to me what it is that is going wrong here?
>>> U+000A sounds like line feed. Does your string contain any newline
>>> characters
>>> like CR or LF? You have to remove those, as you have to manage line
>>>breaks
>>> yourself.
>>> 
>>>> Thanks :)
>>>> 
>>>> 
>>>> Johanneke Lamberink
>>> 
>>> BR
>>> Andreas Lehmkühler
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>> For additional commands, e-mail: users-help@pdfbox.apache.org
>> 
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>For additional commands, e-mail: users-help@pdfbox.apache.org
>


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


Re: IllegalArgumentException when using PDType1Font.HELVETICA

Posted by John Hewson <jo...@jahewson.com>.
> On 27 May 2015, at 03:38, Johanneke Lamberink <jo...@onior.com> wrote:
> 
> Hi,
> 
> The string with the U+000A (LF) is retrieved by calling
> PDAnnotation.getContents().
> I expected to be able to use the String returned by that method in
> PDPageContentStream.showText(), but apparently that is not the case.
> 
> Thanks.

If there’s an appearance stream (AP) for the field then that will take precedence over the
Contents. If there’s not, then it’s always possible that the Contents is using glyphs which
are missing in the font. PDF doesn’t understand newlines anyway, so an LF character in
the text would need to be handled at some higher level than showText(). Indeed, LF is not
even present in WinAnsiEncoding which is why you’re seeing an error when using
PDType1Font.HELVETICA.

— John

> 
> Johanneke Lamberink
> 
> Onior Group B.V.
> Jan Pieterszoon Coenstraat  7
> 2595 WP Den Haag
> The Netherlands
> Office: +31 70 799 94 85     Mobile: + 31 6 23 76 76 45
> 
> 
> 
> 
> 
> 
> Op 27/5/15 12:28 schreef Andreas Lehmkühler <an...@lehmi.de>:
> 
>> Hi,
>> 
>>> Johanneke Lamberink <jo...@onior.com> hat am 27. Mai 2015
>>> um
>>> 10:52 geschrieben:
>>> 
>>> 
>>> Hi,
>>> 
>>> When writing a given String to a PDF I am encountering the following
>>> stacktraces in the logging:
>>> 
>>> 
>>> Caused by: java.lang.IllegalArgumentException: No glyph for U+000A in
>>> font
>>> Helvetica
>>>        at
>>> org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:320)
>>>        at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>>>        at
>>> 
>>> org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStrea
>>> m.java:358)
>>> 
>>> and:
>>> 
>>> 
>>> 
>>> Caused by: java.lang.IllegalArgumentException: This font type only
>>> supports
>>> 8-bit code points
>>>        at
>>> org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:311)
>>>        at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>>>        at
>>> org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:311)
>>> 
>>> I am not sure if this is a problem in my choice of font, my use of the
>>> api, or
>>> the encoding done by pdfbox.
>>> 
>>> Can anyone explain to me what it is that is going wrong here?
>> U+000A sounds like line feed. Does your string contain any newline
>> characters
>> like CR or LF? You have to remove those, as you have to manage line breaks
>> yourself.
>> 
>>> Thanks :)
>>> 
>>> 
>>> Johanneke Lamberink
>> 
>> BR
>> Andreas Lehmkühler
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>> For additional commands, e-mail: users-help@pdfbox.apache.org
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
> 


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


Re: IllegalArgumentException when using PDType1Font.HELVETICA

Posted by Johanneke Lamberink <jo...@onior.com>.
Hi,

The string with the U+000A (LF) is retrieved by calling
PDAnnotation.getContents().
I expected to be able to use the String returned by that method in
PDPageContentStream.showText(), but apparently that is not the case.

Thanks.


Johanneke Lamberink

Onior Group B.V.
Jan Pieterszoon Coenstraat  7
2595 WP Den Haag
The Netherlands
Office: +31 70 799 94 85     Mobile: + 31 6 23 76 76 45






Op 27/5/15 12:28 schreef Andreas Lehmkühler <an...@lehmi.de>:

>Hi,
>
>> Johanneke Lamberink <jo...@onior.com> hat am 27. Mai 2015
>>um
>> 10:52 geschrieben:
>> 
>> 
>> Hi,
>> 
>> When writing a given String to a PDF I am encountering the following
>> stacktraces in the logging:
>> 
>> 
>> Caused by: java.lang.IllegalArgumentException: No glyph for U+000A in
>>font
>> Helvetica
>>         at
>> org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:320)
>>         at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>>         at
>> 
>>org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStrea
>>m.java:358)
>> 
>> and:
>> 
>> 
>> 
>> Caused by: java.lang.IllegalArgumentException: This font type only
>>supports
>> 8-bit code points
>>         at
>> org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:311)
>>         at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>>         at
>> org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:311)
>> 
>> I am not sure if this is a problem in my choice of font, my use of the
>>api, or
>> the encoding done by pdfbox.
>> 
>> Can anyone explain to me what it is that is going wrong here?
>U+000A sounds like line feed. Does your string contain any newline
>characters
>like CR or LF? You have to remove those, as you have to manage line breaks
>yourself.
>
>> Thanks :)
>> 
>> 
>> Johanneke Lamberink
>
>BR
>Andreas Lehmkühler
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>For additional commands, e-mail: users-help@pdfbox.apache.org
>


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


Re: IllegalArgumentException when using PDType1Font.HELVETICA

Posted by Andreas Lehmkühler <an...@lehmi.de>.
Hi,

> Johanneke Lamberink <jo...@onior.com> hat am 27. Mai 2015 um
> 10:52 geschrieben:
> 
> 
> Hi,
> 
> When writing a given String to a PDF I am encountering the following
> stacktraces in the logging:
> 
> 
> Caused by: java.lang.IllegalArgumentException: No glyph for U+000A in font
> Helvetica
>         at
> org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:320)
>         at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>         at
> org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:358)
> 
> and:
> 
> 
> 
> Caused by: java.lang.IllegalArgumentException: This font type only supports
> 8-bit code points
>         at
> org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:311)
>         at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
>         at
> org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:311)
> 
> I am not sure if this is a problem in my choice of font, my use of the api, or
> the encoding done by pdfbox.
> 
> Can anyone explain to me what it is that is going wrong here?
U+000A sounds like line feed. Does your string contain any newline characters
like CR or LF? You have to remove those, as you have to manage line breaks
yourself.

> Thanks :)
> 
> 
> Johanneke Lamberink

BR
Andreas Lehmkühler

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