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]

Reply via email to