Scratch that. I realized that I was still using the file from Acrobat, not Foxit. The file from Foxit causes an exception to be thrown.
On Tue, Dec 24, 2019 at 4:13 PM Robert Pepersack < robert.pepers...@itgfirm.com> wrote: > I created a new PDF file with Foxit PhantomPDF that's the same as the one > I created with Adobe Acrobat DC. Without the work-around you gave me, the > PDF I created with Foxit PhantomPDF has the same problem as the one I > created with Acrobat DC. The date field is empty until I click on it. > When I move the focus away, the date field content disappears. With the > work-around the PDF I created with Foxit PhantomPDF works correctly. > > So, it appears that it's not a defect in the document that I created with > Adobe Acrobat DC. > > On Tue, Dec 24, 2019 at 3:35 PM Maruan Sahyoun <sahy...@fileaffairs.de> > wrote: > >> I think the reasoning is that setting a different string will not ensure >> the proper format as has been intentef by the forms designer >> >> > Am 24.12.2019 um 20:18 schrieb Tilman Hausherr <thaush...@t-online.de>: >> > >> > Hi, >> > >> > In the meantime I found the file FreedomExpressions.pdf and amusingly, >> the JS content is the same: >> > >> > AFDate_FormatEx("mm/dd/yyyy"); >> > >> > I agree that we should create the appearance stream. But I still wonder >> why the decision was made a long time ago not to. >> > >> > Tilman >> > >> >> Am 24.12.2019 um 18:07 schrieb Maruan Sahyoun: >> >> We should be able to remove the test for a JavaScript action and >> generate the appearance regardless. If there is a JavaScript >> >> action that should take the value and recalculate the entry. What >> happens here (I think as I don't have the form) is that the >> >> JavaScript is attached to an interactive event which is not triggered >> which results in an empty field. >> >> >> >> OTOH this is also a defect of the form itself as the scripting assumes >> interactive use. >> >> >> >> If we remove the check we will take the provided string as is and >> won't execute the JavaScript (as we can't) which might lead to >> >> a visual representation which is not intented e.g. the JavaScript >> typically does date formatting in a way that differs from the >> >> string being passed. >> >> >> >> BTW that's the reasoning why we don't set the appearance if there is a >> JavaScript action attached. >> >> >> >> WDYT? >> >> >> >> BR >> >> Maruan >> >> >> >> >> >> >> >>> Oh, I could reproduce this. >> >>> >> >>> Then I debugged it. The code doesn't set the appearance if the /F >> entry >> >>> is set. (That is a Javascript action) >> >>> >> >>> There is a code comment: >> >>> >> >>> PDFormFieldAdditionalActions actions = >> field.getActions(); >> >>> >> >>> // in case all tests fail the field will be formatted by >> >>> acrobat >> >>> // when it is opened. See FreedomExpressions.pdf for an >> >>> example of this. >> >>> if (actions == null || actions.getF() == null || >> >>> widget.getCOSObject().getDictionaryObject(COSName.AP) != null) >> >>> { >> >>> >> >>> This code part is from before it became an apache project, I don't >> have >> >>> that file, didn't search for the ticket. >> >>> >> >>> So remove the /F entry before setting, with >> >>> >> >>> field.getActions().setF(null); >> >>> >> >>> The drawback is that the "formatter" will be gone. A compromise would >> be >> >>> to put it back after setting the field: >> >>> >> >>> PDDocument doc = PDDocument.load(...); >> >>> PDField f = >> >>> doc.getDocumentCatalog().getAcroForm().getField("dateField"); >> >>> PDAction fa = f.getActions().getF(); >> >>> f.getActions().setF(null); >> >>> f.setValue("01.01.2020"); >> >>> f.getActions().setF(fa); >> >>> >> >>> >> >>> Tilman >> >>> >> >>> Am 24.12.2019 um 16:57 schrieb Robert Pepersack: >> >>>> Hi Tilman, >> >>>> I'm using PDFBox version 2.0.17. Here is my code: >> >>>> >> >>>> public void fillForm(Map<String, String> formMap) >> >>>> { >> >>>> >> >>>> File file = new File(myFile); >> >>>> >> >>>> try (PDDocument doc = PDDocument.load(file)) { >> >>>> >> >>>> PDDocumentCatalog docCatalog = doc.getDocumentCatalog(); >> >>>> PDAcroForm acroForm = docCatalog.getAcroForm(); >> >>>> >> >>>> if (acroForm != null) { >> >>>> >> >>>> for (Map.Entry<String, String> entry : formMap.entrySet()) { >> >>>> String key = entry.getKey(); >> >>>> PDField field = acroForm.getField(key); >> >>>> >> >>>> if (field instanceof PDVariableText) { >> >>>> >> >>>> if (field instanceof PDTextField) { >> >>>> PDTextField textField = PDTextField.class.cast(field); >> >>>> textField.setValue(formMap.get(key)); >> >>>> >> >>>> } else if (field instanceof PDChoice) { >> >>>> PDChoice choice = PDChoice.class.cast(field); >> >>>> choice.setValue(formMap.get(key)); >> >>>> >> >>>> } >> >>>> } else if (field instanceof PDCheckBox) { >> >>>> PDCheckBox checkBox = PDCheckBox.class.cast(field); >> >>>> boolean value = Boolean.valueOf(formMap.get(key)); >> >>>> if (value) { >> >>>> checkBox.check(); >> >>>> } else { >> >>>> checkBox.unCheck(); >> >>>> } >> >>>> >> >>>> } else if (field instanceof PDRadioButton) { >> >>>> PDRadioButton radioButton = PDRadioButton.class.cast(field); >> >>>> radioButton.setValue(formMap.get(key)); >> >>>> >> >>>> } >> >>>> } >> >>>> >> >>>> File outputFile = new File("test.pdf"); >> >>>> doc.save(outputFile); >> >>>> } >> >>>> } catch (IOException e) { >> >>>> throw new AssistBusinessException(e); >> >>>> } >> >>>> } >> >>>> >> >>>> } >> >>>> >> >>>> On Tue, Dec 24, 2019 at 10:43 AM Tilman Hausherr < >> thaush...@t-online.de> >> >>>> wrote: >> >>>> >> >>>>> Am 23.12.2019 um 22:09 schrieb Robert Pepersack: >> >>>>>> 2. Run my Java program that loads the .pdf file, populates its form >> >>>>>> fields, and saves it to a new file on my local disk. >> >>>>> What code did you use to populate the date field, and what PDFBox >> >>>>> version did you use (the current version is 2.0.18)? I'm asking >> because >> >>>>> the date field does not have an appearance stream. >> >>>>> >> >>>>> Tilman >> >>>>> >> >>>>> >> >>>>> >> --------------------------------------------------------------------- >> >>>>> To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org >> >>>>> For additional commands, e-mail: users-h...@pdfbox.apache.org >> >>>>> >> >>>>> >> >>> --------------------------------------------------------------------- >> >>> To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org >> >>> For additional commands, e-mail: users-h...@pdfbox.apache.org >> >>> >> > >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org >> > For additional commands, e-mail: users-h...@pdfbox.apache.org >> > >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org >> For additional commands, e-mail: users-h...@pdfbox.apache.org >> >>