[ 
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

Reply via email to