[ https://issues.apache.org/jira/browse/PDFBOX-5436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17538071#comment-17538071 ]
Michael Klink commented on PDFBOX-5436: --------------------------------------- As mentioned in PDFBOX-3356, *NeedAppearances* has been deprecated in PDF 2.0. Also, appearance streams are required since PDF 2.0. Thus, for a version of 2 and higher, the PDFBox 3 code change is correct. But in PDFBOX-3356 [~msahyoun] said that new values shall *always* be reflected, not only for PDFs of version 2 and up. Thus, there apparently was some reason for that change for arbitrary PDF versions. > PDTerminalField.applyChange() no longer check for > getAcroForm().getNeedAppearances() > ------------------------------------------------------------------------------------ > > Key: PDFBOX-5436 > URL: https://issues.apache.org/jira/browse/PDFBOX-5436 > Project: PDFBox > Issue Type: Bug > Components: AcroForm > Affects Versions: 3.0.0 PDFBox > Reporter: wai > Priority: Major > > In version 2.0.26, I fill fields in PDF form by > {code:java} > PDDocument pdf = ...; // loaded a PDF form > PDAcroForm pdfForm = pdf.getDocumentCatalog().getAcroForm(); > pdfForm.setNeedAppearances(true); > pdfForm.getField("field_name_xxxx").setValue("some text");{code} > Although the PDF form doesn't contain all glyph for the text set, > {{org.apache.pdfbox.pdmodel.interactive.form.PDTerminalField.applyChange()}} > would not apply {{constructAppearances()}} as {{setNeedAppearances(true)}} > configured. > However when we come to version 3.0.0-alpha3, > {{PDTerminalField.applyChange()}} won't check the status from > {{getAcroForm().getNeedAppearances()}} before invoking > {{{}constructAppearances(){}}}. This behaviour contradicted the comment wrote > "{{{}Applies a value change to the field. Generates appearances if required > and raises events.{}}}" > +version 2.0.26+ > > {code:java} > package org.apache.pdfbox.pdmodel.interactive.form; > public abstract class PDTerminalField extends PDField > { > /** > * Applies a value change to the field. Generates appearances if required > and raises events. > * > * @throws IOException if the appearance couldn't be generated > */ > protected final void applyChange() throws IOException > { > if (!getAcroForm().getNeedAppearances()) > { > constructAppearances(); > } > // if we supported JavaScript we would raise a field changed event > here > }{code} > > +3.0.0-alpha3+ > > {code:java} > package org.apache.pdfbox.pdmodel.interactive.form; > public abstract class PDTerminalField extends PDField > { > /** > * Applies a value change to the field. Generates appearances if required > and raises events. > * > * @throws IOException if the appearance couldn't be generated > */ > protected final void applyChange() throws IOException > { > constructAppearances(); > // if we supported JavaScript we would raise a field changed event > here > }{code} > > > > > -- This message was sent by Atlassian Jira (v8.20.7#820007) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org