我有一个PDF模板,其中包含启用了扩展功能的表单.使用iTextSharp填写此表单的字段后,使用acrobat reader的用户会收到错误消息:
本文档在Adobe Reader中启用了扩展功能.该文档自创建以来已更改,并且不再使用扩展功能.请联系作者以获取本文档的原始版本.
我google了一下,但所有的帖子都谈到了"启用"扩展功能,但是,我希望表单字段保持禁用状态并关闭扩展功能
这是我正在使用的示例代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
mkl*_*mkl 11
该iText的关键字:读卡器启用PDF文件指向以下信息:
由Bruno Lowagie于星期五,12/31/2010 - 16:37提交
填写表单后,我的PDF显示以下消息:此文档在Adobe Reader中启用了扩展功能.该文档自创建以来已更改,并且不再使用扩展功能.请联系作者以获取本文档的原始版本.我该如何避免这条消息?
表单的创建者使文档Reader成为可能.只能使用Adobe软件完成阅读器启用.您可以通过两种方式避免此消息:
- 删除使用权限.这将导致表单不再启用Reader.例如:如果文档的创建者允许填写的表单可以在本地保存,则在删除使用权限后将无法再进行此操作.
- 在追加模式下填写表格.这将导致更大的文件大小,但将保留Reader启用.
它还指向示例ReaderEnabledForm.java(C#/ iTextSharp等效的ReaderEnabledForm.cs),它显示了如何执行任何操作.
在你的情况下,这等于召唤
pdfReader.RemoveUsageRights();
Run Code Online (Sandbox Code Playgroud)
在创建之后PdfReader和创建之前PdfStamper.
/**
* Removes any usage rights that this PDF may have. Only Adobe can grant usage rights
* and any PDF modification with iText will invalidate them. Invalidated usage rights may
* confuse Acrobat and it's advisabe to remove them altogether.
*/
public void RemoveUsageRights()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5321 次 |
| 最近记录: |