Hi, > Am 18.05.2016 um 09:14 schrieb Timo Rumland <[email protected]>: > > Hi Maruan, > >> What you can do is set NeedApparances to false, update >> the field and afterwards set the value to true again. > > I've just tested this with the following code (I hope I understood you > correctly and my naive approach is sufficient): > > ---------- > > pdAcroForm.setNeedAppearances( false ); > pdField.setValue( "test content" ); > pdAcroForm.setNeedAppearances( true ); > > ---------- > > (The rest of my sample code is unaltered.) > > Now after running the test code, the form field in the resulting PDF file is > NOT empty, but the space between "test" and "content" (the desired field > content is "test content") has been replaced with a special character (and > the position of the text is slightly off). > > Please, see this screenshot I made: > > * https://goo.gl/dWUvKy > > There you can see the difference between the source PDF form file and the > resulting file after printing. >
unfortunately you are hit by https://issues.apache.org/jira/browse/PDFBOX-3332. Will check its state. Maruan > > To be honest, I now have absolutely no idea what could cause this, and I > really hope you have some more ideas about it, as the problem gets more and > more urgent for my current project. > > > > Thanks a lot for your help! > > > > Best Regards, > Timo > > > > > > > > -----Ursprüngliche Nachricht----- > Von: Maruan Sahyoun [mailto:[email protected]] > Gesendet: Dienstag, 17. Mai 2016 21:19 > An: [email protected] > Betreff: Re: After using 'PrinterJob' to print a PDF form, the form fields > are empty (PDFBox 2.0.0) > > Hi, > >> Am 17.05.2016 um 17:04 schrieb Timo Rumland <[email protected]>: >> >> Hello, >> >> after migrating from PDFBox 1.8 to 2.0.0, printing a PDF form via >> 'PrinterJob' and ' PDFPrintable ', in which I filled out the form >> fields via PDFBox, results in a PDF file (or a physical print) with >> the form fields empty. >> > > the form fields value is set but the appearance stream for the form field > (what you see) is not updated as the NeedAppearances flag is set to true. > PDFBox (currently) handles it that it doens't update the appearance stream > of the form field in that case (that should probably be changed). > > What you can do is set NeedApparances to false, update the field and > afterwards set the value to true again. > > > BR > Maruan > > >> With PDFBox 1.8, the following simple code worked: >> >> >> ---------- >> >> File sourcePdfForm = new File( "g:/test-form.pdf" ); File >> resultPdfForm = new File( "g:/test-form_out.pdf" ); >> >> // Load the source PDF form file >> PDDocument pdDocument = PDDocument.load( sourcePdfForm ); >> PDDocumentCatalog pdDocumentCatalog = pdDocument.getDocumentCatalog(); >> PDAcroForm pdAcroForm = pdDocumentCatalog.getAcroForm(); >> >> // Setting PDF field content in "textfield01" >> PDField pdField = pdAcroForm.getField( "textfield01" ); >> pdField.setValue( "test content" ); >> >> pdDocument.save( resultPdfForm ); >> pdDocument.close(); >> >> // Open the resulting PDF file, which shows the content in the PDF >> field "textfield01" >> Desktop.getDesktop().open( resultPdfForm ); >> >> >> // Now open the resulting file again, printing it with the default >> printer // No matter if the default printer is an PDF printer (like >> PDFCreator) or // an actual physical printer, the content of the field >> "textfield01" is empty >> >> pdDocument = PDDocument.load( resultPdfForm ); >> >> PrinterJob printerJob = PrinterJob.getPrinterJob(); >> printerJob.setJobName( "printerJob" ); printerJob.setPrintService( >> PrintServiceLookup.lookupDefaultPrintService() >> ); >> printerJob.setPrintable( new PDFPrintable( pdDocument ) ); >> printerJob.print( new HashPrintRequestAttributeSet( >> MediaSizeName.ISO_A4 ) ); >> >> pdDocument.close(); >> >> ---------- >> >> -- What this code sample does -- >> >> As you can see, this is a test case where I first load a source PDF >> form, setting the value of a form field and save the resulting PDF >> file. After that I load the resulting PDF file and use a PrinterJob to >> print it on the default printer. >> >> >> -- The problem -- >> >> Now using PDFBox 2.0.0: No matter what the default printer is - a PDF >> printer like PDFCreator or a physical printer - the form fields of the >> printed out PDF file are empty >> >> Interestingly, opening the resulting PDF form 'test-form_out.pdf' (see >> line 'Desktop.getDesktop().open( resultPdfForm );') in any PDF viewer >> (Adobe Acrobat Reader DC, PDF XChange Viewer etc.) shows the correct >> form field content for field 'textfield01', which is 'test content'. >> >> The test PDF form file I use is a really simple form, containing only >> a label and the form field named "testfield01". If you wish, you can >> download 'test-form.pdf' here: >> >> * https://goo.gl/VMiohj >> >> As mentioned, with PDFBox 1.8 I was able to print out PDF forms via a >> 'PrinterJob' with form field contents. >> >> >> -- Related posts -- >> >> There are several posts or bug reports regard empty form fields, like > these: >> >> * >> http://stackoverflow.com/questions/14541647/pdfbox-set-visible-when-pr >> inting (not providing a valid solution in my case) >> * >> http://stackoverflow.com/questions/24149361/form-field-values-set-with >> -pdfbo x-not-visible-in-adobe-reader (my PDF form is a AcroForm and >> has no XFA >> data) >> * https://issues.apache.org/jira/browse/PDFBOX-71 (setting >> 'pdAcroForm.getCOSObject().setItem( COSName.getPDFName( >> "NeedAppearances" ), COSBoolean.TRUE );' did not help in my case) >> >> Unfortunately, none of these did help. >> >> >> >> Any advice on this problem is highly appreciated >> >> >> >> Thanks a lot for your help! >> >> >> Best regards, >> Timo >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

