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

时间:2015-03-18 03:20:20

标签: java pdf itext

我有这个工作流程。

  1. 将包含表单字段的pdf加载到浏览器中(pdf在iframe或div中)。
  2. 用户填写
  3. 用户点击'提交'按钮(在另一个div中)保存pdf。
  4. 我想在#3中做的是收集与表单字段关联的所有数据,并将数据保存到数据库表中。我不希望用户将pdf保存到他/她的本地计算机并将其上传到服务器。我想让它更加用户友好。

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

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

    我打算创建一个类似于PDF的HTML表单,并在用户点击“提交”时将其填充到PDF中。按钮,但正如我所说,我想让它更加用户友好。

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

1 个答案:

答案 0 :(得分:3)

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

enter image description here

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

  • POST将发布我填写的数据,就像PDF是HTML表单一样,
  • FDF将以表格数据格式将数据发布到服务器,这种格式与PDF非常相似,但只包含数据对,而不是实际形式,
  • XFDF将以XML Forms Data Format格式将数据发布到服务器,这是Forms数据格式的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查看器作为他们的浏览器插件。