使用iText保存用户输入PDF模板

时间:2014-09-11 13:45:02

标签: java templates pdf itext

我有一个pdf表单,用户输入一些信息,如姓名和地址。 使用iText,我可以用用户输入保存新的pdf文件吗?如何获取用户输入的文本值,如stamper.getAcroFields()。setField(“name”,nameTextBox.text);?许多示例代码使用硬编码值,但我想使用用户在文本框中输入的内容。

PdfReader reader = new PdfReader("C:/temp/Template.pdf");
FileOutputStream fileOutputStream = new FileOutputStream("C:/temp/TemplateTest.pdf");
PdfStamper stamper = new PdfStamper(reader, fileOutputStream);

//Can I do something like this?

stamper.getAcroFields().setField("name", nameTextBox.text);
stamper.getAcroFields().setField("address", addressTextBox.text);
stamper.getAcroFields().setField("city", cityTextBox.text);
stamper.getAcroFields().setField("zip", zipTextBox.text);

1 个答案:

答案 0 :(得分:1)

您有一个PDF,用户可以在其中输入一些信息。

问题1:用户如何提交表单数据?

[a。]用户无法在本地安全保护PDF ,除非文档是启用阅读器的,如果用户拥有Adobe Acrobat的版本(不是Reader)。阅读器启用文档只能使用Adobe软件完成;见Editable PDF using itext (5.3.0) in java. Not able to save data in Adobe Reader X

[b。]用户可以提交字段到服务器。这可以以查询字符串,FDF文件或XFDF文件的形式完成。如果表单是启用Reader或用户具有Acrobat,他也可以将完整的填写PDF提交给服务器。

问题2:如何将表单数据存储在PDF中?

如果用户提交完整的PDF,则无需将表单数据存储在PDF中。它已经存在了。您可以检索如下信息:

String name = reader.getAcroFields().getField("name");

如果您将信息作为查询字符串获取,只需检查键/值对并使用您在问题中已有的代码。如果信息存储在FDF文件中,则需要FdfReader。如果信息存储在XFDF文件中,则需要XfdfReader

问题3:您如何使用用户在文本框中输入的内容?

这个问题尚不清楚。你在说什么?

如果文本框是PDF中的文本框,请参阅问题1下的[a。]。

如果文本框是网页中的文本框,请参阅问题1下的[b。]。

如果文本框是某个独立应用程序中的文本框,请参阅问题2的答案。

总而言之,您的问题质量很差。当您说“许多样本使用硬编码值”时,很明显您没有阅读官方文档。