> On 17 May 2016, at 12:18, Maruan Sahyoun <[email protected]> wrote:
> 
> 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).

Yeah - it seems like it would be ok for PDFBox to update the appearance stream, 
even though NeedAppearances is true.

— John

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


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

Reply via email to