[ 
https://issues.apache.org/jira/browse/PDFBOX-3752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Travis Schneeberger updated PDFBOX-3752:
----------------------------------------
    Description: 
PDVariableText text color changes to be the same as the background color after 
flattening.  This effectively makes the text hidden and appear to be lost. 
 This includes field types such as ListBox and TextField.  I don't believe I 
have tested a combo box.

For example:

{code}

        try(PDDocument pdfDocument = PDDocument.load(new 
File("/Users/travis/Desktop/fdpAttachment2.pdf"))) {

            final PDDocumentCatalog docCatalog = 
pdfDocument.getDocumentCatalog();
            final PDAcroForm acroForm = docCatalog.getAcroForm();

            final PDField textField = acroForm.getField("Subaward Number");
            textField.setValue("12345");

            final PDField listBoxField = acroForm.getField("Contact for 
carryforward");
            listBoxField.setValue("Administrative Contact");


            //when flattening with refreshAppearances, a NPE will occur if each 
widget doesn't have a
            //PDAppearanceDictionary instance with a normal PDAppearanceEntry 
instance set PDFBOX-3751
            pdfDocument.getDocumentCatalog().getAcroForm().getFields()
                    .stream()
                    .flatMap(f -> f.getWidgets().stream())
                    .filter(w -> w.getAppearance() == null)
                    .forEach(w -> {
                        final PDAppearanceDictionary appearance = new 
PDAppearanceDictionary(new COSDictionary());
                        appearance.setNormalAppearance(new 
PDAppearanceEntry(new COSDictionary()));
                        w.setAppearance(appearance);
                    });

pdfDocument.getDocumentCatalog().getAcroForm().flatten(pdfDocument.getDocumentCatalog().getAcroForm().getFields(),
 true);
            
pdfDocument.save("/Users/travis/Desktop/fdpAttachment2-example-flattened.pdf");
        }

{code}

Notice in the attached fdpAttachment2-example-flattened.pdf, the fields are 
correctly set but the text is not visible.

If I execute the same code but do not flatten, the text is visible for certain 
field types in certain pdf viewers.  See attached 
fdpAttachment2-example-not-flattened.pdf
In Adobe Acrobat Reader DC build 15.23.20056.213124 the "Subaward Number" field 
shows up but only when clicking on the field.  When using the Preview app in 
MacOS Sierra, it is visible.  In both apps the "Contact for carryforward" list 
box shows the text "Administrative Contact"

  was:
PDVariableText text color changes to be the same as the background color after 
flattening.  This effectively makes the text hidden and appear to be lost. 
 This includes field types such as ListBox and TextField.  I don't believe I 
have tested a combo box.

For example:

{code}

        try(PDDocument pdfDocument = PDDocument.load(new 
File("/Users/travis/Desktop/fdpAttachment2.pdf"))) {

            final PDDocumentCatalog docCatalog = 
pdfDocument.getDocumentCatalog();
            final PDAcroForm acroForm = docCatalog.getAcroForm();

            final PDField textField = acroForm.getField("Subaward Number");
            textField.setValue("12345");

            final PDField listBoxField = acroForm.getField("Contact for 
carryforward");
            listBoxField.setValue("Administrative Contact");


            //when flattening with refreshAppearances, a NPE will occur if each 
widget doesn't have a
            //PDAppearanceDictionary instance with a normal PDAppearanceEntry 
instance set PDFBOX-3751
            pdfDocument.getDocumentCatalog().getAcroForm().getFields()
                    .stream()
                    .flatMap(f -> f.getWidgets().stream())
                    .filter(w -> w.getAppearance() == null)
                    .forEach(w -> {
                        final PDAppearanceDictionary appearance = new 
PDAppearanceDictionary(new COSDictionary());
                        appearance.setNormalAppearance(new 
PDAppearanceEntry(new COSDictionary()));
                        w.setAppearance(appearance);
                    });

pdfDocument.getDocumentCatalog().getAcroForm().flatten(pdfDocument.getDocumentCatalog().getAcroForm().getFields(),
 true);
            
pdfDocument.save("/Users/travis/Desktop/fdpAttachment2-example-flattened.pdf");
        }

{code}

Notice in the attached fdpAttachment2-example-flattened.pdf, the fields are 
correctly set but the text is not visible.

If I execute the same code but do not flatten, the text is visible.  See 
attached fdpAttachment2-example-not-flattened.pdf



> PDVariableText text color changes to be the same as the background color 
> after flattening
> -----------------------------------------------------------------------------------------
>
>                 Key: PDFBOX-3752
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3752
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 2.0.5
>            Reporter: Travis Schneeberger
>             Fix For: 2.0.6
>
>         Attachments: fdpAttachment2-example-flattened.pdf, fdpAttachment2.pdf
>
>
> PDVariableText text color changes to be the same as the background color 
> after flattening.  This effectively makes the text hidden and appear to be 
> lost. 
>  This includes field types such as ListBox and TextField.  I don't believe I 
> have tested a combo box.
> For example:
> {code}
>         try(PDDocument pdfDocument = PDDocument.load(new 
> File("/Users/travis/Desktop/fdpAttachment2.pdf"))) {
>             final PDDocumentCatalog docCatalog = 
> pdfDocument.getDocumentCatalog();
>             final PDAcroForm acroForm = docCatalog.getAcroForm();
>             final PDField textField = acroForm.getField("Subaward Number");
>             textField.setValue("12345");
>             final PDField listBoxField = acroForm.getField("Contact for 
> carryforward");
>             listBoxField.setValue("Administrative Contact");
>             //when flattening with refreshAppearances, a NPE will occur if 
> each widget doesn't have a
>             //PDAppearanceDictionary instance with a normal PDAppearanceEntry 
> instance set PDFBOX-3751
>             pdfDocument.getDocumentCatalog().getAcroForm().getFields()
>                     .stream()
>                     .flatMap(f -> f.getWidgets().stream())
>                     .filter(w -> w.getAppearance() == null)
>                     .forEach(w -> {
>                         final PDAppearanceDictionary appearance = new 
> PDAppearanceDictionary(new COSDictionary());
>                         appearance.setNormalAppearance(new 
> PDAppearanceEntry(new COSDictionary()));
>                         w.setAppearance(appearance);
>                     });
> pdfDocument.getDocumentCatalog().getAcroForm().flatten(pdfDocument.getDocumentCatalog().getAcroForm().getFields(),
>  true);
>             
> pdfDocument.save("/Users/travis/Desktop/fdpAttachment2-example-flattened.pdf");
>         }
> {code}
> Notice in the attached fdpAttachment2-example-flattened.pdf, the fields are 
> correctly set but the text is not visible.
> If I execute the same code but do not flatten, the text is visible for 
> certain field types in certain pdf viewers.  See attached 
> fdpAttachment2-example-not-flattened.pdf
> In Adobe Acrobat Reader DC build 15.23.20056.213124 the "Subaward Number" 
> field shows up but only when clicking on the field.  When using the Preview 
> app in MacOS Sierra, it is visible.  In both apps the "Contact for 
> carryforward" list box shows the text "Administrative Contact"



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to