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]

Reply via email to