[
https://issues.apache.org/jira/browse/PDFBOX-2846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14647633#comment-14647633
]
Georges Toth commented on PDFBOX-2846:
--------------------------------------
Hi,
I am facing the exact same problem.
With the latest stable version it works as expected. Using the latest git
revision it fails with the following error:
Exception in thread "main" java.lang.IllegalArgumentException: No glyph for
U+0074 in font Calibri
at
org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.encode(PDTrueTypeFont.java:357)
at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
at org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:311)
at
org.apache.pdfbox.pdmodel.interactive.form.PlainTextFormatter.format(PlainTextFormatter.java:188)
at
org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.insertGeneratedAppearance(AppearanceGeneratorHelper.java:307)
at
org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceContent(AppearanceGeneratorHelper.java:171)
at
org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceValue(AppearanceGeneratorHelper.java:126)
at
org.apache.pdfbox.pdmodel.interactive.form.PDTextField.constructAppearances(PDTextField.java:262)
at
org.apache.pdfbox.pdmodel.interactive.form.PDTerminalField.applyChange(PDTerminalField.java:220)
at
org.apache.pdfbox.pdmodel.interactive.form.PDTextField.setValue(PDTextField.java:217)
As the document which was uploaded by Aaron actually works for me, I looked a
bit closer at what the difference between his and my document is and I did spot
something.
In his document the Arial font is used, whereas in mine it is Calibri.
I tracked down the issue to be exactly that. The postscript table is empty, and
thus the glyph cannot be found and it throws an exception.
Now why that happens, I have no idea.
When I change the font of all my fields to Arial (just for testing), it works
fine.
It also doesn't make a difference whether the font is embedded or not.
For illustrating purposes I have attached another sample to this report with
one field using Arial and another one using Calibri font.
Code for testing:
PDTextField fieldtest = (PDTextField)
acroForm.getField("form1[0].#subform[0].Header[0].Name[0]");
fieldtest.setValue("test Something");
PDTextField fieldtest2 = (PDTextField)
acroForm.getField("form1[0].#subform[0].Header[0].Title[0]");
fieldtest2.setValue("test Something");
> setValue failing with font issues.
> ----------------------------------
>
> Key: PDFBOX-2846
> URL: https://issues.apache.org/jira/browse/PDFBOX-2846
> Project: PDFBox
> Issue Type: Bug
> Components: AcroForm
> Affects Versions: 2.0.0
> Environment: Ubuntu, Java 7 & OS X Java 7
> Reporter: Aaron Eischeid
> Attachments: Pulmotil_VFD_Swine_Template.pdf
>
>
> attempting to upgrade from 1.8.9 to 2.0.0 and Working with the snapshot
> builds I am bumping into what might be a bug regarding fonts.
> trying to setValue on a PDTextField object. If the value contains a space
> char I get an error.
> on Ubuntu my stacktrace is:
> {code}
> No glyph for U+0020 in font Arial-BoldMT. Stacktrace follows:
> java.lang.IllegalArgumentException: No glyph for U+0020 in font Arial-BoldMT
> at
> org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.encode(PDTrueTypeFont.java:297)
> at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:282)
> at org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:311)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PlainText$Paragraph.getLines(PlainText.java:169)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PlainTextFormatter.format(PlainTextFormatter.java:177)
> at
> org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.insertGeneratedAppearance(AppearanceGeneratorHelper.java:246)
> at
> org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceContent(AppearanceGeneratorHelper.java:152)
> at
> org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceValue(AppearanceGeneratorHelper.java:106)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PDTextField.constructAppearances(PDTextField.java:262)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PDTerminalField.applyChange(PDTerminalField.java:220)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PDTextField.setValue(PDTextField.java:217)
> ...
> {code}
> On OS X the stacktrace is :
> {code}
> Caused by: java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.pdfbox.pdmodel.font.FontMapper$DefaultFontProvider
> at
> org.apache.pdfbox.pdmodel.font.FontMapper.getProvider(FontMapper.java:99)
> at
> org.apache.pdfbox.pdmodel.font.FontMapper.findFont(FontMapper.java:428)
> at
> org.apache.pdfbox.pdmodel.font.FontMapper.getTrueTypeFont(FontMapper.java:326)
> at
> org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.<init>(PDTrueTypeFont.java:155)
> at
> org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:75)
> at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:96)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PDAppearanceString.copyNeededResourcesTo(PDAppearanceString.java:173)
> at org.apache.pdfbox.
> pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceContent(AppearanceGeneratorHelper.java:130)
> at
> org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceValue(AppearanceGeneratorHelper.java:106)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PDTextField.constructAppearances(PDTextField.java:262)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PDTerminalField.applyChange(PDTerminalField.java:220)
> at
> org.apache.pdfbox.pdmodel.interactive.form.PDTextField.setValue(PDTextField.java:217)
> ...
> {code}
> not sure what the difference is on the two systems that causes this, but this
> and the fact that setField worked pretty well in 1.8.9 with the same pdf file
> makes me think it isn't related entirely to something broken about the
> embedded font in the pdf.
> example (groovy) code for setting a value
> {code}
> ...
> PDDocumentCatalog catalog = document.getDocumentCatalog()
> PDAcroForm acroForm = catalog.getAcroForm()
> def fieldtest = acroForm.getField('certNo')
> fieldtest.setValue('test Something') // <- change to
> 'testSomething' and it will work
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]