【发布时间】:2014-09-09 21:21:54
【问题描述】:
我正在通过我的应用程序使用 iText 动态创建一些 PDF 文件,我需要使用几个组件(TextField、CheckBox、RadioButtons 等),然后将值提交到服务器。但是,其中一项要求是用户需要能够选择和发送文件以及其他值。我没有找到特定的组件,所以我请求帮助解决这种情况。
有没有办法创建某种输入文件、文件选择器等,并将其附加到生成的 PDF 文件上?然后将这个选定的文件发送到服务器?
谢谢
【问题讨论】:
我正在通过我的应用程序使用 iText 动态创建一些 PDF 文件,我需要使用几个组件(TextField、CheckBox、RadioButtons 等),然后将值提交到服务器。但是,其中一项要求是用户需要能够选择和发送文件以及其他值。我没有找到特定的组件,所以我请求帮助解决这种情况。
有没有办法创建某种输入文件、文件选择器等,并将其附加到生成的 PDF 文件上?然后将这个选定的文件发送到服务器?
谢谢
【问题讨论】:
这在官方文档中有解释,更具体的在我的book的第9章的例子FdfServlet。但是,在此示例中,我们将文件选择字段添加到现有 PDF,因此我为您制作了一个示例,说明如何在从头开始创建文档时创建此类字段:FileSelectionExample
文件选择字段的创建与任何其他文本字段一样,但您必须使用setOptions() 方法设置标志。如果要显示文件选择器,还必须添加 JavaScript 操作:
TextField file = new TextField(writer, new Rectangle(36, 788, 559, 806), "myfile");
file.setOptions(TextField.FILE_SELECTION);
PdfFormField upload = file.getTextField();
upload.setAdditionalActions(PdfName.U, PdfAction.javaScript(
"this.getField('myfile').browseForFileToSubmit();", writer));
writer.addAnnotation(upload);
在完整示例中,我还添加了第二个字段,在使用 browseForFileToSubmit() 方法选择文件后,我将焦点设置到另一个字段。我这样做是因为文件名只有在该字段失去焦点后才会在文件选择字段中可见。
【讨论】: