[
https://issues.apache.org/jira/browse/PDFBOX-5436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17538304#comment-17538304
]
Michael Klink commented on PDFBOX-5436:
---------------------------------------
[~msahyoun],
{quote}Comments/Feedback welcome{quote}
I'm definitively in favor of generally creating appearances by default.
But as long as there is no replacement font mechanism to handle tasks like
[~waiwai_]'s task, there should be a not-too-low-level way to set the value
without creating an appearance. Optimally this way should _remove_ any existing
appearance. Field appearances containing something different than the field
value have been abused to change signed PDFs; nowadays, therefore, such
differences may actually cause Adobe Acrobat to validate a signature as invalid.
> 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
> Attachments: image-2022-05-17-18-36-33-378.png
>
>
> 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: [email protected]
For additional commands, e-mail: [email protected]