首页 文章

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

提问于
浏览
-1

我有一个 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 回答

  • 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 中。它已经存在了。您可以检索如下信息:

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

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

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

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

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

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

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

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

相关问题