我有一个 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 回答
您有一个 PDF,用户可以在其中输入一些信息。
问题 1:用户如何提交表单数据?
[1]用户不能本地安全 PDF,除非文件是 Reader-enabled 或用户有 Adobe Acrobat 版本(不是 Reader)。 Reader-enabling 文档只能用 Adobe 软件完成;见使用 java 中的 itext(5.3.0)编辑可编辑的 PDF。无法在 Adobe Reader X 中保存数据
[4]用户可以**将字段提交给服务器。这可以以查询字符串,FDF 文件或 XFDF 文件的形式完成。如果表单是 Reader-enabled 或用户有 Acrobat,他也可以将完整的 filled-in PDF 提交给服务器。
问题 2:如何将表格数据存储在 PDF 中?
如果用户提交完整的 PDF,则无需将表单数据存储在 PDF 中。它已经存在了。您可以检索如下信息:
如果您将信息作为查询字符串获取,只需检查 key/value 对并使用您在问题中已有的代码。如果信息存储在 FDF 文件中,则需要
FdfReader
。如果信息存储在 XFDF 文件中,则需要XfdfReader
。问题 3:如何使用用户在文本框中输入的内容?
这个问题尚不清楚。你在说什么?
如果文本框是 PDF 中的文本框,请参阅问题 1 下的[9]。
如果文本框是网页中的文本框,请参阅问题 1 下的[10]。
如果文本框是某个独立应用程序中的文本框,请参阅问题 2 的答案。
总而言之,您的问题质量很差。当您说“许多样本使用硬编码值”时,很明显您没有阅读官方文档。