我有一个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);
答案 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的答案。
总而言之,您的问题质量很差。当您说“许多样本使用硬编码值”时,很明显您没有阅读官方文档。