1
当我将注释从一个PDF文档复制到另一个PDF文档时,我想更新FreeText注释中的文本内容,但出于某种原因,使用下面显示的方法不能在最终的PDF中更新文本。注释对象更新,但PDF中的最终结果不反映FreeText注释类型的更新内容。奇怪的是,墨水类型注释确实得到了修改后的内容的更新,因为它以粘滞注释的形式显示,并在墨迹注释本身的顶部覆盖注释。itext7更新注释文本
下面是我使用的代码(如果需要的话,我可以添加更多)的快速片段:
foreach (var anno in annots)
{
var a = anno.GetPdfObject().CopyTo(masterPdfDoc);
PdfAnnotation ano = PdfAnnotation.MakeAnnotation(a);
var contents = ano.GetContents().ToString();
ano.SetContents(new PdfString("COMMENT: " + contents));
//ano.Put(PdfName.Contents, new PdfString("COMMENT: " + contents));
masterDocPage.AddAnnotation(ano);
}
将不胜感激提供任何意见。谢谢
您更新'/ Contents'条目的值,但我没有看到你在任何地方改变了外观('/ AP')。 –
感谢Bruno的快速反应!很高兴得到创建者的回应:-)我对itext7和PDF规范一般都很陌生,所以我不明白外观如何影响文本注释中显示的文本内容。我似乎应该能够更新内容并将其反映出来。我使用GetAppearanceDictionary()和GetAppearanceCharacteristics()来查看数据,我无法弄清楚我需要在那里更改。 –
@BrunoLowagie我也发现这个https://stackoverflow.com/questions/36902331/cant-change-contents-of-annotation后,但无法做任何工作。我试着看着DA,N等,但对我而言,我并不清楚我应该改变什么。我也尝试通过'ano.Remove(PdfName.AP);'在标记的答案中建议删除AP。 –