首页 文章

编辑浏览器中嵌入的pdf并将pdf直接保存到服务器

提问于
浏览
4

我有这个工作流程 .

  • 将包含表单字段的pdf加载到浏览器中(pdf在iframe或div中) .

  • 用户将其填写

  • 用户单击'Submit'按钮(在另一个div中)以保存pdf .

我想在#3中做的是收集与表单字段相关的所有数据,并将数据保存到数据库表中 . 我不希望用户将pdf保存到他/她的本地计算机并将其上传到服务器 . 我想让它更加用户友好 .

我将在服务器端使用Java / JSP / Servlet . 我查看了似乎在处理pdf文件时流行/众所周知的itext,但是itext似乎用于生成/编辑pdf,但我不确定是否有任何方法可以使某个功能能够编辑嵌入浏览器的pdf并保存到数据库 .

是否有任何adobe软件提供某种功能,我可以注入某种可以捕获用户提交的脚本?我知道PDF不是前端脚本语言,但我只想问 .

我打算创建一个HTML表单,看起来像这个PDF,当用户点击“提交”按钮时将其填充到PDF中,但正如我所说,我想让它更加用户友好 .

我很感激,如果有人看过这种类型的功能或者已经完成它给了我一些资源或提示 .

1 回答

  • 3

    我的假设:您有一个交互式PDF文档,其AcroForm字段类似于submit_me.pdf

    enter image description here

    主要区别在于我在表单上有不同的按钮:

    • POST将发布我填写的数据,就像PDF是HTML表单一样,

    • FDF将以表格数据格式将数据发布到服务器,这种格式与PDF非常相似,但只包含数据对,而不是实际表格,

    • XFDF将以XML Forms Data Format(格式数据格式的XML版本)将数据发布到服务器 .

    • RESET会将所有字段重置为初始值 .

    SubmitForm示例显示了如何将按钮添加到现有表单 . 请注意,除了本示例中描述的选项之外,还有更多选项 .

    例如:

    • 您可以通过调整一些参数来使用GET,而不是使用POST方法,

    • 您还可以将完整的PDF(数据表单)提交给服务器,但这仅在最终用户将Adobe Acrobat作为插件时才有效 . 如果插件仅仅是Adobe Reader,这将不起作用,

    • ......

    为了向您展示提交表单时的期望,我编写了ShowData servlet . 此servlet返回发送到服务器的字节 .

    如果是POST:

    personal.loginname=jdoe&personal.name=John+Doe&personal.password=test&personal.reason=reason&post.x=29&post.y=7
    

    请注意,我还定义了按钮,使我的点击坐标传递给服务器 . 你可能不需要这个 .

    如果是FDF:

    %FDF-1.2
    %âãÏÓ
    1 0 obj
    <</FDF<</Fields[<</T(FDF)>><</Kids[<</T(loginname)/V(jdoe)>><</T(name)/V(John Doe)>><</T(password)/V(test)>><</T(reason)/V(Reason)>>]/T(personal)>>]/ID[<EF0089E16ED50F11CB6057A700B9046E><1205D069D1D6AE37665B6FF7EEA65414>]>>/Type/Catalog>>
    endobj
    trailer
    <</Root 1 0 R>>
    %%EOF
    

    如果是XFDF:

    <?xml version="1.0" encoding="UTF-8"?>
    <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"
    ><f href="http://itextpdf.com:8180/book/submit_me.pdf"
    /><fields
    ><field name="XFDF"
    /><field name="personal"
    ><field name="loginname"
    ><value
    >jdoe</value
    ></field
    ><field name="name"
    ><value
    >John Doe</value
    ></field
    ><field name="password"
    ><value
    >test</value
    ></field
    ><field name="reason"
    ><value
    >Reason</value
    ></field
    ></field
    ></fields
    ><ids original="EF0089E16ED50F11CB6057A700B9046E" modified="1205D069D1D6AE37665B6FF7EEA65414"
    /></xfdf
    >
    

    在理想的世界中,这将是您的解决方案 . 它在ISO-32000-1中描述,它是PDF的世界标准 . 但是:很多人开始使用不支持此功能的糟糕的PDF查看器,所以如果你想使用这个解决方案,你必须确保人们使用一个体面的PDF查看器作为他们的浏览器插件 .

相关问题