【问题标题】:Send file to server through iText PDF?通过 iText PDF 将文件发送到服务器?
【发布时间】:2014-09-09 21:21:54
【问题描述】:

我正在通过我的应用程序使用 iText 动态创建一些 PDF 文件,我需要使用几个组件(TextField、CheckBox、RadioButtons 等),然后将值提交到服务器。但是,其中一项要求是用户需要能够选择和发送文件以及其他值。我没有找到特定的组件,所以我请求帮助解决这种情况。

有没有办法创建某种输入文件、文件选择器等,并将其附加到生成的 PDF 文件上?然后将这个选定的文件发送到服务器?

谢谢

【问题讨论】:

    标签: file pdf itext send


    【解决方案1】:

    这在官方文档中有解释,更具体的在我的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() 方法选择文件后,我将焦点设置到另一个字段。我这样做是因为文件名只有在该字段失去焦点后才会在文件选择字段中可见。

    【讨论】:

    • Bruno,谢谢你的回答,它真的帮助了我在这个领域。但是,我在服务器端获取文件时遇到了一些问题。我怀疑提交按钮,甚至是创建的 PDF 都有问题。我目前正在使用提交:submit.setAction(PdfAction.createSubmitForm(url, null, 0));但文件字段返回为空。有什么建议?谢谢
    • 事实上,它现在起作用了。我将库更改为更新的库,并尝试了该示例。现在唯一的问题是如何获取文件名,但我认为它是可以管理的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2013-11-04
    • 1970-01-01
    • 2019-05-25
    • 2011-05-29
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多