iTextSharp PdfStamper.PartialFormFlatten仅展平部分而非全部字段
下面的代码正确地将值“foo”赋给了命名字段,但该字段没有被“展平”。我一定是忽略了一步,但我不知道那是什么。请告知。谢谢iTextSharp PdfStamper.PartialFormFlatten仅展平部分而非全部字段,itext,Itext,下面的代码正确地将值“foo”赋给了命名字段,但该字段没有被“展平”。我一定是忽略了一步,但我不知道那是什么。请告知。谢谢 public byte[] FlattenSpecifiedFormFields(byte[] b, List<string> fieldNames2Flatten) { PdfReader reader = new PdfReader(b); using (var ms = new MemoryStream())
public byte[] FlattenSpecifiedFormFields(byte[] b, List<string> fieldNames2Flatten)
{
PdfReader reader = new PdfReader(b);
using (var ms = new MemoryStream())
{
var stamper = new iTextSharp.text.pdf.PdfStamper(reader, ms);
foreach (string name in fieldNames2Flatten)
{
stamper.AcroFields.SetField(name, "foo");
stamper.PartialFormFlattening(name);
}
stamper.Close();
return ms.ToArray();
};
}
public byte[]指定字段(byte[]b,List fieldNames2Flatten)
{
PDF阅读器=新PDF阅读器(b);
使用(var ms=new MemoryStream())
{
var stamper=new iTextSharp.text.pdf.PdfStamper(阅读器,ms);
foreach(fieldNames2Flatten中的字符串名称)
{
stamper.AcroFields.SetField(名称“foo”);
母版。局部成形(名称);
}
压模关闭();
返回ToArray女士();
};
}
即使在部分展平表单时,PdfStamper
formflatting
属性也必须设置为true
。即:
var stamper = new PdfStamper(reader, ms);
stamper.FormFlattening = true;
foreach (string name in fieldNames2Flatten)
{
stamper.AcroFields.SetField(name, "foo");
stamper.PartialFormFlattening(name);
}
获取
PdfStamper
实例后,调用PartialFormFlattening()
(在foreach
块之外):stamper.formflatting=true
@kuujinbo将此作为答案,以便答案可以被接受和投票;-)