Hello Maruan, > unfortunately you are hit by https://issues.apache.org/jira/browse/PDFBOX-3332. > Will check its state. > Maruan
thanks a lot! In the meantime, is there any known workaround? I think about the following: I read in the JIRA ticket, that using the standard PDF font Helvetica does not cause these problems. If this is correct: I can't control the source of the PDF files, but the used font for the form fields does not matter in my case. So while I can't force the source PDF form to use a specific font, I can modify the used font in the PDF form via PDFBox (if possible) before printing. Is there a way to set the default Helvetica font (specified by 'PDType1Font.HELVETICA' as far as I know) for all form fields before printing? Maybe this is a solution / workaround in my case, so no weird characters are displayed? Thanks again! Best Regards, Timo -----Ursprüngliche Nachricht----- Von: Maruan Sahyoun [mailto:[email protected]] Gesendet: Mittwoch, 18. Mai 2016 10:43 An: [email protected] Betreff: Re: After using 'PrinterJob' to print a PDF form, the form fields are empty (PDFBox 2.0.0) 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-p >> r inting (not providing a valid solution in my case) >> * >> http://stackoverflow.com/questions/24149361/form-field-values-set-wit >> h -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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

