我有一个支持XFA的PDF文档,我想以编程方式填写。我正在使用C#和iTextSharp 5.5.12.0
该文档受密码保护,因此我设置了PdfReader.unethicalreading = true;
我正在使用的文件是N-400。
当我在Adobe Acrobat Reader中查看时,填充的文档已正确设置了字段。但是,如果我在浏览器(例如IE或Chrome)中打开它,则字段为空。
我在追加模式下打开文件。
这是我的代码(SRC,XML和DEST是包含文件完整路径的字符串)。
using (FileStream pdf = new FileStream(SRC, FileMode.Open))
using (FileStream xml = new FileStream(XML, FileMode.Open))
using (FileStream filledPdf = new FileStream(DEST, FileMode.Create))
{
PdfReader.unethicalreading = true;
PdfReader pdfReader = new PdfReader(pdf);
pdfReader.RemoveUsageRights();
PdfStamper stamper = new PdfStamper(pdfReader, filledPdf, '\0', true);
string[] fields = stamper.AcroFields.Fields.Select(x => x.Key).ToArray();
for (int key = 0; key <= fields.Count() - 1; key++)
{
stamper.AcroFields.SetFieldProperty(fields[key], "setfflags", PdfFormField.FF_READ_ONLY, null);
}
stamper.Writer.CloseStream = false;
stamper.AcroFields.Xfa.FillXfaForm(xml);
stamper.Close();
pdfReader.Close();
}