string templateDocPath = @"Original.pdf";
using (PdfDocument myTemplate = PdfReader.Open(templateDocPath, PdfDocumentOpenMode.Modify))
{
PdfAcroForm form = myTemplate.AcroForm;
if (form.Elements.ContainsKey("/NeedAppearances"))
{
form.Elements["/NeedAppearances"] = new PdfBoolean(true);
}
else
{
form.Elements.Add("/NeedAppearances", new PdfBoolean(true));
}
PdfTextField testField = (PdfTextField)(form.Fields["Name"]);
testField.Value = new PdfString("NameTest");
testField.ReadOnly = true;
myTemplate.Save(@"Output.pdf");
myTemplate.Close();
}
当我试图解决问题时,我发现该消息只有在您向Acrooforms添加“/Needappearances”元素之后才出现。您需要此元素或文档上编写的值不会显示。 我发现了一个论坛(
https://forum.pdfsharp.net/viewtopic.php?f = 2&t =3741
),在这里有人问了相同的问题,但最后的评论提到“/needepappearances”对文档产生新值。因此,当您打开文档时,将生成新值,因此您必须保存它们。
我想知道这是否是真的,并且有办法删除消息吗?
Https://forum.pdfsharp.net/viewtopic.php?f = 2&t = 2&t =617
)。从PDFSHARP 1.50版本开始,最高支持的版本为17(请参阅支持PDF版本的PDFSHARPWIKI
)。adding /deedAppearance实际上是折旧,因为填充的表格说acrobat应该重新绘制形式正确的图形外观(可能包括Adobe XFA Rich Text),因此不会添加Double Refresh命令。 如果读者看到触发它应该编辑文件,因此需要在闭合周期中进行整理。 基本上不需要使用它。
当前的PDF 2.0中已弃用了NeedAppearances。 必需品是一个标志,指定是否要为文档中所有窗口小部件注释构建外观流和外观词典。 (ISO 32000-1,第12.7.2节“交互式形式词典”)参数:
必需品 - 布尔值。默认值是false折旧的原因之一是引入PDF/A,其中PDF应为档案,因此不进行自我编辑。旧的解决方法甚至可能尝试使用通常被阻止的Adobe Internal Js,因此任何规避也应被视为冗余
QUOTE不使用
交互式字典中的needAppearances属性,Acroform(请参阅第12.7.2节),必须设置该字段的更新,但不一定会显示。为了解决这个问题,可以使用以下代码段。pdf.Root.AcroForm.update(PdfDict(NeedAppearances=PdfObject('true')))