Am 01.03.2017 um 23:55 schrieb Christopher Schultz:
All,

I'm getting an error when preparing text to write to a PDF document:

java.lang.IllegalArgumentException: U+2265 ('greaterequal') is not
available in this font's encoding: WinAnsiEncoding
         at
org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:345)
         at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:286)
         at
org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:315)


It's obvious that the ≥ symbol isn't available in the font we are using
(probably the default set of fonts... we aren't doing anything fancy at
this point).

Is there a good way to "sanitize" a string for the current font?

You could call PDFont.encode() for each character and catch IllegalArgumentException, and replace your string with whatever you like.

Btw maybe the symbol is available - you're using WinAnsiEncoding. If you use font files (call PDType0Font.load()), then you can use much more glyphs.

Tilman


I can just start building a character-by-character replacement table,
but that's a little too whack-a-mole for my tastes. I'd prefer to do
something like ask the API what characters aren't okay, replace them
with something that IS okay (like "?") and log a warning. Then we can
collect the warnings and map the characters in a nicer way later.

Is there any way to do that kind of thing with PDFBox?

Thanks,
-chris



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to