我正在使用iTextSharp 5.5.3我有一个带有命名字段的PDF我使用Adobe生命周期创建我能够使用iTextSharp填充字段但是当我更改字段的textcolor时它不会改变。我真的不知道为什么会这样。这是我的代码
form.SetField("name", "Michael Okpara");
form.SetField("session", "2014/2015");
form.SetField("term", "1st Term");
form.SetFieldProperty("name", "textcolor", BaseColor.RED, null);
form.RegenerateField("name");
答案 0 :(得分:2)
如果您的表单是使用Adobe LifeCycle创建的,那么有两个选项:
如果我可以做出有根据的猜测,我会说你有一个混合形式,你只是改变了AcroForm字段的文本颜色而没有改变XFA字段中的文本颜色(这真的很难实现)
请尝试添加此行:
form.RemoveXfa();
这将删除XFA流,从而生成仅保留AcroForm描述的表单。
我使用您共享的表单来编写一个名为RemoveXFA的小示例来演示这一点。这是该示例的C#/ iTextSharp版本:
public void ManipulatePdf(String src, String dest)
{
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileStream(dest, FileMode.Create));
AcroFields form = stamper.AcroFields;
form.RemoveXfa();
IDictionary<String, AcroFields.Item> fields = form.Fields;
foreach (String name in fields.Keys)
{
if (name.IndexOf("Total") > 0)
form.SetFieldProperty(name, "textcolor", BaseColor.RED, null);
form.SetField(name, "X");
}
stamper.Close();
reader.Close();
}
在此示例中,我删除了XFA流,并查看了所有剩余的AcroField。我使用单词&#34; Total&#34;更改所有字段的文本颜色。在他们的名字中,我用&#34; X&#34;。
填写每个字段结果如下所示:reportcard.pdf
所有字段都显示字母&#34; X&#34;,但TOTAL列中的字段以红色显示。
答案 1 :(得分:0)
我终于找到了一种方法,猜测问题来自于使用Adobe LC,所以我切换到Open Office它都工作但是当我压扁表格时,一切都消失了。我找到了ITextSharp PDFTemplate FormFlattening removes filled data
的解决方案感谢Lowagie先生的帮助