部分填写 PDF 表单,使其可编辑

Posted

技术标签:

【中文标题】部分填写 PDF 表单,使其可编辑【英文标题】:Partially filling PDF forms, keeping them editable 【发布时间】:2012-07-30 07:26:18 【问题描述】:

我们想向我的用户展示一个可编辑的 PDF(表单),其中我们已经填写了一些字段。然后,用户应通过浏览器使用 Adob​​e Reader 填写其余字段,然后保存/打印文件。

有没有办法做到这一点?

我尝试过使用 iTextSharp,它可以让我很好地将数据填充到字段中,但之后文件被“展平”,无法进一步编辑。

我发现了一个先前的问题 [Keep a pdf form editable after filling it with pdftk],据说这是不可能的。不过看了[Placing current date into a text field of a PDF form using javascript]后,感觉使用Adobe JavaScript API 或许可以实现。

有人有这方面的经验吗?

顺便说一句,我们的用户将使用 Internet Explorer 9+。

【问题讨论】:

PDF with fillable, saveable form using open-source software的可能重复 谢谢。我目前正在调查您链接的帖子中提出的一些建议。 【参考方案1】:

我确定您已经尝试过,但请尝试调出您的压模对象,并将 Form flattening 属性设置为 false。原谅我的c#,但如果你甚至必须转换的话,转换应该不会太麻烦。

PdfStamper stamper = new PdfStamper(reader, new FileStream(fileName, 
FileMode.Create, FileAccess.ReadWrite));

stamper.FormFlattening = false;

如果您已经这样做了,我不知道该告诉您什么,因为我没有足够的信息来确定任何替代方案。如果没有在代码中明确引用,我不完全确定默认表单展平属性设置为什么。让我知道这是否适合您。

干杯

【讨论】:

OP 说“(...)通过浏览器使用 Adob​​e Reader(...)”所以这个解决方案 will not work. 我尝试过使用FormFlatening = false,但是,它不起作用。我认为对文件的修改会以某种方式破坏文档的“数字签名”,这是 Adob​​e Reader 显示可编辑字段所必需的。 @MikeVarosky 更正:我们实际上得到了 stamper.FormFlatening = false 的工作。一开始我不知道出了什么问题,但现在我们有了一个工作 PDF 表单编辑器 :D.

以上是关于部分填写 PDF 表单,使其可编辑的主要内容,如果未能解决你的问题,请参考以下文章

在 UITextField 上启用复制和粘贴而不使其可编辑

使用 PDFBOX 填写 PDF 表单中的多个字段并在填写后锁定编辑 pdf 文档

使用 PHP 将值插入到可编辑的 PDF 中,并使其保持可编辑状态

Adobe Reader来填写的表单无法保存,我怎么做pdf表单才能使别人可以用Adobe Reader来填写的表单能保存

这可能吗?从 PDF 到可编辑表单

pdfformfiller2填写后无法编辑PDF表单