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-printing > (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]

