pdfsharp保存的文档始终在填写表单字段之后启动“保存更改”消息

问题描述 投票:0回答:2
我制作了一个程序,在该程序中,我使用PDF文件并使用PDFSHARP填充带有所需值的表单字段。我制作的代码正常,它写得很好,但是问题出现在您打开PDF并尝试关闭它之后,您将收到一条标准消息“您是否要在关闭之前保存更改”,即使您刚刚打开并关闭了文档。我使用的代码看起来像:

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”对文档产生新值。因此,当您打开文档时,将生成新值,因此您必须保存它们。 我想知道这是否是真的,并且有办法删除消息吗?

昨天我试图找到标题中描述的确切问题的答案时,昨天遇到了这篇文章。我从未从我运行的任何Google搜索中找到任何东西。但是,我能够弄清楚问题是什么。
c# pdf pdfsharp
2个回答
0
投票
解决方案是在保存之前设置pdfdocument的版本(可以在此处看到一个示例:

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节“交互式形式词典”)

0
投票

参数:

必需品 - 布尔值。默认值是false

折旧的原因之一是引入PDF/A,其中PDF应为档案,因此不进行自我编辑。旧的解决方法甚至可能尝试使用通常被阻止的Adobe Internal Js,因此任何规避也应被视为冗余

QUOTE不使用


交互式字典中的needAppearances属性,Acroform(请参阅第12.7.2节),必须设置该字段的更新,但不一定会显示。为了解决这个问题,可以使用以下代码段。

pdf.Root.AcroForm.update(PdfDict(NeedAppearances=PdfObject('true')))


正确的答案是确保表格充分保存,并被视为静态内容。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.