Description
From the users mailing list when trying to set a field value to the Euro sign the following exception occurs
Exception in thread "main" java.lang.IllegalArgumentException: No glyph for U+20AC in font Arial at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.encode(PDTrueTypeFont.java:267) at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:268) at org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:297) at org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.calculateHorizontalOffset(AppearanceGeneratorHelper.java:564) at org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.insertGeneratedAppearance(AppearanceGeneratorHelper.java:305) at org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.createAppearanceContent(AppearanceGeneratorHelper.java:228) at org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceValue(AppearanceGeneratorHelper.java:203) at org.apache.pdfbox.pdmodel.interactive.form.AppearanceGenerator.generateFieldAppearances(AppearanceGenerator.java:61) at org.apache.pdfbox.pdmodel.interactive.form.PDField.updateFieldAppearances(PDField.java:121) at org.apache.pdfbox.pdmodel.interactive.form.PDTextField.setValue(PDTextField.java:289)
A small test loading the extracted font ArialMT directly with
PDTrueTypeFont font2 = PDTrueTypeFont.loadTTF(document, new File("ArialMT.ttf")); font2.encode("€");
gives the same error whereas using
PDType0Font font = PDType0Font.load(document, new File("ArialMT.ttf")); font.encode("€");
the error doesn't happen.