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

Edit pdf embedded in the browser and save the pdf directly to server

我有这个工作流程。

  1. 将包含表单字段的 pdf 加载到浏览器中(iframe 或 div 中的 pdf)。
  2. 有用户填写
  3. 用户单击 'Submit' 按钮(在另一个 div 中)以保存 pdf。

我想在#3 中做的是收集与表单字段相关的所有数据并将数据保存到数据库中table。我不希望用户将 pdf 保存到 his/her 本地计算机并将其上传到服务器。我想让它更人性化。

我打算在服务器端使用 Java/JSP/Servlet。我查看了似乎 popular/well-known 用于处理 pdf 文件的 itext,但 itext 似乎用于 generating/editing pdf,但我不确定是否有任何方法可以使功能成为能够编辑浏览器中嵌入的 pdf 并保存到数据库。

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

我打算创建一个看起来像这个 PDF 的 HTML 表单,并在用户单击 'submit' 按钮时将其填充到 PDF 中,但正如我所说,我想制作它更人性化。

如果有人看过或做过此类功能,请给我一些资源或提示,我将不胜感激。

我的假设:您有一个带有类似于 submit_me.pdf:

的 AcroForm 字段的交互式 PDF 文档

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

  • POST 将 post 我填写的数据,就好像 PDF 是 HTML 表格一样,
  • FDF 将 post 表单数据格式的数据发送到服务器,这种格式与 PDF 非常相似,但只包含数据对,而不包含实际表单,
  • XFDF 将 post 数据以 XML 表单数据格式发送到服务器,这是表单数据格式的 XML 版本。
  • RESET 会将所有字段重置为其初始值。

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

例如:

  • 除了使用 POST 方法,您还可以通过调整一些参数来使用 GET,
  • 您也可以将完整的PDF(数据+表格)提交到服务器,但这只有在最终用户有Adobe Acrobat 作为插件时才有效。如果插件只是 Adob​​e Reader,
  • ,这将不起作用
  • ...

为了向您展示提交表单时的预期结果,我编写了 ShowData servlet。此 servlet returns 发送到服务器的字节数。

如果 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 查看器作为他们的浏览器插件。