我有一个PDF模板,其中包含启用了扩展功能的表单 . 使用iTextSharp填写此表单的字段后,使用acrobat reader的用户会收到错误消息:
此文档在Adobe Reader中启用了扩展功能 . 该文档自创建以来已更改,并且不再使用扩展功能 . 请联系作者以获取本文档的原始版本 .
我用Google搜索了一下,但是所有的帖子都讨论了"enabling"扩展功能,但是,我希望表单字段保持 disabled 并关闭扩展功能
这是我正在使用的示例代码:
using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
{
// Open existing PDF
var pdfReader = new PdfReader(existingFileStream);
// PdfStamper, which will create
var stamper = new PdfStamper(pdfReader, newFileStream);
var form = stamper.AcroFields;
var fieldKeys = form.Fields.Keys;
foreach (string fieldKey in fieldKeys)
{
if (fieldKey.Equals("Retailer Name"))
form.SetField(fieldKey, retailerName);
}
// “Flatten” the form so it wont be editable/usable anymore
stamper.FormFlattening = true;
stamper.Close();
pdfReader.Close();
}
2 回答
iText Keyword:Reader enabled PDFs指向以下信息:
它还指向示例ReaderEnabledForm.java(C#/ iTextSharp等效于ReaderEnabledForm.cs),它显示了如何执行任何操作 .
在你的情况下,这等于召唤
创建
PdfReader
之后和创建PdfStamper.
之前使用
PdfStamper
约束器重载以附加模式填写表单