Hi, > Am 30.04.2015 um 11:31 schrieb [email protected]: > > > Hello, > > I have solved my problems by re-creating my template from scratch with > OpenOffice and exporting it to PDF, instead of using a template created by > one of my colleagues using an MS Word file which he imported into Acrobat Pro. > > Case closed. >
thanks Philippe for letting us know - I was just about to take a look at your files. Good luck with your project. Maruan > Philippe > > > ----- Mail original ----- > De: [email protected] > À: [email protected] > Envoyé: Lundi 27 Avril 2015 14:15:56 > Objet: Re: "Empty" AcroFields > > Hi Maruan, > > I've printed one of the generated PDFs and some of the fields contain > vertical text. > > Best regards, > > Philippe > > ----- Mail original ----- > De: [email protected] > À: [email protected] > Envoyé: Lundi 27 Avril 2015 13:46:45 > Objet: Re: "Empty" AcroFields > > Hi Maruan, > > I am using version 1.8.9. > > Yes, I can provide the empty sample and a filled-out form. > > May I send them to your e-mail address? > > Thanks. > > Philippe > > > > ----- Mail original ----- > De: "Maruan Sahyoun" <[email protected]> > À: [email protected] > Envoyé: Lundi 27 Avril 2015 12:40:04 > Objet: Re: "Empty" AcroFields > > Hi > >> Am 27.04.2015 um 12:32 schrieb [email protected]: >> >> Hello, >> >> >> the following code creates a PDF whose pages contain AcroForms filled in >> with data extracted from a CSV file. >> The forms' template was created with Acrobat Pro. It is landscaped (+90 >> degree rotation). >> >> I have the following issues: >> >> - when I open each generated form in Acrobat, the fields look empty or >> contain text which is lightly offset to the left and top (for instance, you >> can only see the text's bottom). >> If I click an "empty" field though, its contents appear. >> - if I set the form's fields to read-only in my code, the text appears, but >> it is vertical > > this behavior means that the appearance might not have been generated > correctly. Which version of PDFBox are you using? Would you have an empty > sample form, and the same filled with Acrobat and PDFBox? > > Sidenote - although it's defined in the PDF specification how an appearance > is generated the 'styling' (such a padding around the text, linespacing...) > is not part of the PDF specification so one can only replicate the behavior > of e.g. Acrobat. Your form might still look different (or OK) using a > different reader. > > BR > Maruan > >> >> How can I fix these issues? >> >> Many thanks. >> >> Philippe >> >> >> void generatePdf(final List<TreeMap<String, String>> csvDataArrayList, >> final File pdfTemplateFilePath, >> final String pathToGeneratedPdfDirectory) >> throws COSVisitorException, IOException >> { >> >> final File finalDocFilePath = new >> File(pathToGeneratedPdfDirectory, "newPdf.pdf"); >> >> final PDDocument finalDoc = new PDDocument(); >> final List<PDField> finalDocFields = new ArrayList<PDField>(); >> >> int csvLineCounter = 0; >> >> // Loop through CSV lines and retrieve each line's data >> for (Map<String, String> pdfLineTreeMap : csvDataArrayList) { >> >> // Retrieve template's catalog >> final PDDocumentCatalog templateCatalog = >> PDDocument.load(pdfTemplateFilePath).getDocumentCatalog(); >> // Retrieve its acroForm >> final PDAcroForm templateAcroForm = >> templateCatalog.getAcroForm(); >> >> // Get all template PDF's pages >> final List<PDPage> templateCatalogPages = >> templateCatalog.getAllPages(); >> // Get template document's first page >> final PDPage templateFirstPage = >> templateCatalogPages.get(0); >> >> // Add first page to final doc with filled out fields >> finalDoc.addPage(templateFirstPage); >> >> // Loop through PDF field names in pdfLineTreeMap (this >> map was previously >> // created to store the CSV data; its keys are equal to >> the >> // PDF field names) and set their respective values in >> PDF >> for (String fieldName : pdfLineTreeMap.keySet()) { >> >> final String fieldValue = >> pdfLineTreeMap.get(fieldName); >> // Try to retrieve the field in the template's >> acroForm with the same name >> // as the column in csvDataArrayList >> final PDField pDField = >> templateAcroForm.getField(fieldName); >> >> // field with same name in CSV as in PDF was >> found... >> if (pDField != null) { >> >> // Only circle non-empty insertion codes >> if (fieldName.indexOf("INSERT") >= 0 && >> fieldValue != null && fieldValue.length() > 0) { >> circleField(pDField, >> templateFirstPage); >> } >> // add increment to it's partial name >> pDField.setPartialName(fieldName + >> Integer.toString(csvLineCounter)); >> pDField.setValue(fieldValue); >> //pDField.setReadonly(true); >> >> finalDocFields.add(pDField); >> } >> >> } // end for fieldName >> >> // Page number is in templateAcroForm (but not in >> pdfLineTreeMap) >> final PDField pDPageField = >> templateAcroForm.getField("pagenumber"); >> if (pDPageField != null) { >> pDPageField.setPartialName("pagenumber" + >> Integer.toString(csvLineCounter)); >> >> pDPageField.setValue(Integer.toString(csvLineCounter + 1)); >> //pDPageField.setReadonly(true); >> finalDocFields.add(pDPageField); >> } >> >> // Stop at second CSV line for debugging !!!!! >> if (csvLineCounter == 10) { >> break; >> } >> >> ++csvLineCounter; >> >> } // end for CSV Lines >> >> // Create new form in final document >> final PDAcroForm finalDocAcroForm = new PDAcroForm(finalDoc); >> // Set final document's form >> finalDoc.getDocumentCatalog().setAcroForm(finalDocAcroForm); >> // Set form's fields >> finalDocAcroForm.setFields(finalDocFields); >> // Save final doc >> finalDoc.save(finalDocFilePath); >> finalDoc.close(); >> >> } // end generatePdf method >> >> >> --------------------------------------------------------------------- >> 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]

