我正在为我住的地方附近的食品储藏室做一些“无偿”的开发。他们被表格和文书工作所淹没,我想开发一个简单地从他们的MySQL服务器(我在之前的项目中为他们设置)中读取数据的系统,并将数据提供给他们所需的所有表格的PDF版本。填写。这将极大地帮助他们,并为他们节省大量时间,并消除填写这些表格时产生的许多人为错误。
不知道关于PDF文件内部的任何,我可以预见到两种途径:
所以我的第一个问题是:我面临的两条途径中的哪一条? PDF是否具有“字段”的概念,或者我需要通过告诉PDF库放置数据的位置的像素坐标来“填写”这些文档吗?
其次,我显然需要一个开源(和Java)库来完成这项工作。 iText似乎是一个良好的开端,但我听说它可能很难合作。任何人都可以在这里提出一些想法或一般建议吗?提前谢谢!
答案 0 :(得分:20)
您可以使用FDF(表单数据格式)技术轻松地将数据合并到PDF的字段中。
Adobe提供了一个库来执行此操作:Acrobat Forms Data Format (FDF) Toolkit
Apache PDFBox也可以用来做到这一点。
答案 1 :(得分:5)
请参阅免费电子书The Best iText Questions on StackOverflow中有关互动表格的章节。它将问题的答案捆绑在一起,例如:
或者您可以逐步查看this video how to use forms for reporting。
参见例如:
SELECT * FROM person WHERE person_id = 1234567 FOR UPDATE WAIT 3;
UPDATE person SET email_address = 'new.email@company.com' WHERE person_id='1234567';
答案 2 :(得分:1)
public void fillPDF()
{
try {
PDDocument pDDocument = PDDocument.load(new File("D:/pdf/pdfform.pdf")); // pdfform.pdf is input file
PDAcroForm pDAcroForm = pDDocument.getDocumentCatalog().getAcroForm();
PDField field = pDAcroForm.getField("Given Name Text Box");
field.setValue("Kalyan");
field = pDAcroForm.getField("Family Name Text Box");
field.setValue("Gutta");
field = pDAcroForm.getField("Country Combo Box");
field.setValue("India");
System.out.println("country combo" );
field = pDAcroForm.getField(" Driving License Check Box");
field = pDAcroForm.getField("Favourite Colour List Box");
System.out.println("country combo"+ field.isRequired());
pDDocument.save("D:/pdf/pdf-java-output.pdf");
pDDocument.close();
} catch (IOException e) {
e.printStackTrace();
}
}