You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Maruan Sahyoun (JIRA)" <ji...@apache.org> on 2015/08/07 14:23:46 UTC

[jira] [Commented] (PDFBOX-2846) setValue failing with font issues.

    [ https://issues.apache.org/jira/browse/PDFBOX-2846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14661750#comment-14661750 ] 

Maruan Sahyoun commented on PDFBOX-2846:
----------------------------------------

As the font Calibri doesn't have a postscript name table the statement {{if (!ttf.hasGlyph(name))}} in {{PDTrueTypeFont.encode()}} will be {{false}}.

[~jahewson] Is that check needed as this could also be done on the result of {{getInvertedEncoding()}}?

> 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, testform.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: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org