Hi, > Am 20.05.2016 um 09:49 schrieb Timo Rumland <[email protected]>: > > 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.
Good to hear that, > > > 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. I've created https://issues.apache.org/jira/browse/PDFBOX-3356. Feel free to add comments, samples etc. if you want. > > 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 You're welcome - BR Maruan > > > Best Regards, > Timo > > > > > > -----Ursprüngliche Nachricht----- > Von: Maruan Sahyoun [mailto:[email protected]] > Gesendet: Mittwoch, 18. Mai 2016 15:03 > 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 12:13 schrieb Timo Rumland <[email protected]>: >> >> 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:[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-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: [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] >> > > > --------------------------------------------------------------------- > 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]

