我正在尝试通过修改包含2D条形码的XFA表单PDF来以编程方式设置字段值。我正在使用常规Adobe Reader打开PDF格式。这是一个错误“此文档在adobe reader中启用了扩展功能。文档自创建以来已更改,并且不再使用扩展功能。请联系本文档原始版本的作者”(注意: - 文件打开使用Adobe acrobat)
以下是执行此操作的示例c#代码。
var reader = new PdfReader(@"c:\abc.pdf");
// System.IO.FileStream fs = new FileStream(reader, System.IO.FileMode.CreateNew, FileAccess.ReadWrite);
var output = new MemoryStream();
var stamper = new PdfStamper(reader, output, '\0', true);
stamper.ViewerPreferences = PdfWriter.AllowModifyContents;
stamper.AcroFields.SetField("form1[0].#subform[0].Line1a_FamilyName[0]", "Family Name");
stamper.FormFlattening = false;
stamper.Close();
reader.Close();
Response.AddHeader("Content-Disposition", "attachment; filename=YourPDF.pdf");
Response.ContentType = "application/pdf";
Response.BinaryWrite(output.ToArray());
Response.End();
答案 0 :(得分:0)
iText的作者见this post:
Bruno Lowagie于星期五,12/31/2010 - 16:37提交
填写表单后,我的PDF显示以下消息:此文档在Adobe Reader中启用了扩展功能。该文档自创建以来已更改,并且不再使用扩展功能。请联系作者以获取本文档的原始版本。如何避免此消息?
表单的创建者使文档Reader成为可能。只能使用Adobe软件完成阅读器启用。您可以通过两种方式避免此消息:
1.删除使用权利。这将导致表单不再启用Reader。例如:如果文档的创建者允许填写的表单可以在本地保存,则在删除使用权后将不再可以这样做。
2.在追加模式下填写表格。这将导致更大的文件大小,但将保留Reader启用。 有关详细信息,请阅读iText in Action中的第8.7.1节。