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

Maruan Sahyoun commented on PDFBOX-3597:
----------------------------------------

What happens is this. When you set the value for the first time the DR entry of 
the AcroForm is read and the font resource is put into the appearance 
dictionary. Now, after you have set the value you are changing the DR font 
resource, the DA string and you are calling {{refreshAppearances()}}. 

As the name of the already existing resource is the same as the name of the 
newly set resource in the DA string  {{ArialUnicodeMS}} that rescue is already 
existing in the fields resources and as a result not read again from the 
AcroForm DR entry, which is inline with the specification.

So either make sure that the names are not the same or replace the AcroForm DR 
entry before setting the initial field value.

> PDAcroForm.refreshAppearances() does not respect updated fonts
> --------------------------------------------------------------
>
>                 Key: PDFBOX-3597
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3597
>             Project: PDFBox
>          Issue Type: Bug
>          Components: PDModel
>    Affects Versions: 2.0.3
>            Reporter: Matt Wise
>
> I have attached example files in the External issue URL link.
> I am trying to embed a subset of a font into my pdf after populating the 
> fields.  If I don't run refreshAppearances() the values will be put into the 
> fields, but will only be visible when the field is selected (likely another 
> bug).
> To work around this, I am trying to set the default appearance on the fields 
> manually to reflect the embedded font.  If I embed the whole font, it works 
> as expected, however when I try to embed a subset of the font it fails:
> Exception in thread "main" java.lang.IllegalArgumentException: No glyph for 
> U+540D in font AAWTXC+ArialUnicodeMS
>       at 
> org.apache.pdfbox.pdmodel.font.PDCIDFontType2.encode(PDCIDFontType2.java:400)
>       at 
> org.apache.pdfbox.pdmodel.font.PDType0Font.encode(PDType0Font.java:351)
>       at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:316)
>       at org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:345)
>       at 
> org.apache.pdfbox.pdmodel.interactive.form.PlainTextFormatter.format(PlainTextFormatter.java:195)
>       at 
> org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.insertGeneratedAppearance(AppearanceGeneratorHelper.java:422)
>       at 
> org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceContent(AppearanceGeneratorHelper.java:288)
>       at 
> org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceValue(AppearanceGeneratorHelper.java:170)
>       at 
> org.apache.pdfbox.pdmodel.interactive.form.PDTextField.constructAppearances(PDTextField.java:263)
>       at 
> org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm.refreshAppearances(PDAcroForm.java:318)
>       at test_pdfbox.TestPDFBox.main(TestPDFBox.java:45)
> It would appear that after I call form.setDefaultResources with the updated 
> font, refreshAppearances is still trying to use the old font as the 
> appearance, although I may be wrong.
> Expected:
> appearances are updated, subset of font is embedded.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to