pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timo Rumland" <timo.ruml...@digitalys.de>
Subject AW: After using 'PrinterJob' to print a PDF form, the form fields are empty (PDFBox 2.0.0)
Date Fri, 20 May 2016 07:49:49 GMT
Hi Maruan,

> you can change your code like this to use Helvetica.
> [...]

you saved my day, sir! It works like a charm, thank you very much.


To summarize it - I encountered two problems:


1. "Invisible" form field content.
    
    Workaround: Setting 'pdAcroForm.setNeedAppearances( false )', filling 
    the fields and setting the property to 'true' again.

2. Wrong encoding / weird special chars in form fields.

   Workaround: Using a PDF default font. In my case, setting the font of 
   all form fields to 'PDType1Font.HELVETICA' worked.



Can I contribute something to these problems, maybe creating a JIRA issue
(for the first item), or is PDFBOX-3332 sufficient for the moment?


Thanks again (also to you, John) for all your support


Best Regards,
Timo





-----Urspr√ľngliche Nachricht-----
Von: Maruan Sahyoun [mailto:sahyoun@fileaffairs.de] 
Gesendet: Mittwoch, 18. Mai 2016 15:03
An: users@pdfbox.apache.org
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 12:13 schrieb Timo Rumland <timo.rumland@digitalys.de>:
> 
> 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?


you can change your code like this to use Helvetica.

        pdAcroForm.setNeedAppearances(false);
        // Setting PDF field content in "textfield01"
        PDField pdField = pdAcroForm.getField( "textfield01" );
        PDType1Font helv = PDType1Font.HELVETICA;
        // add the font to the AcroForm Resources
        pdAcroForm.getDefaultResources().put(COSName.getPDFName("Helv"),
helv);
        // Set the default appearance to use that font.
        // Note: this was harcoded from the original value of 
        // 0 0 0 rg /F2 12 Tf
        // which is not totally correct as the font should be the first
parameter
        ((PDTextField)pdField).setDefaultAppearance("/Helv 12 Tf");
        pdField.setValue( "test content" );
        pdAcroForm.setNeedAppearances(true);

BR
Maruan

> 
> 
> Thanks again!
> 
> 
> Best Regards,
> Timo
> 
> 
> 
> 
> 
> 
> 
> 
> -----Urspr√ľngliche Nachricht-----
> Von: Maruan Sahyoun [mailto:sahyoun@fileaffairs.de]
> Gesendet: Mittwoch, 18. Mai 2016 10:43
> An: users@pdfbox.apache.org
> 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 <timo.rumland@digitalys.de>:
>> 
>> 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:sahyoun@fileaffairs.de]
>> Gesendet: Dienstag, 17. Mai 2016 21:19
>> An: users@pdfbox.apache.org
>> 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 <timo.rumland@digitalys.de>:
>>> 
>>> 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-wi
>>> t 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: users-unsubscribe@pdfbox.apache.org
>>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>> For additional commands, e-mail: users-help@pdfbox.apache.org
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>> For additional commands, e-mail: users-help@pdfbox.apache.org
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message