使用itextsharp修改XFA表单PDF并生成PDF格式扩展功能错误

时间:2013-04-22 19:06:09

标签: itextsharp

我正在尝试通过修改包含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();

1 个答案:

答案 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节。