gpt4 book ai didi

PDF 在 Foxit Reader 而不是 Adob​​e Reader 中显示签名

转载 作者:行者123 更新时间:2023-12-01 10:28:27 26 4
gpt4 key购买 nike

为什么这个 PDF 在 Foxit Reader 而不是 Adob​​e Reader 中显示签名?

这是来自 Syncfusion PDF library 的代码用于生成它(另请参阅有关 signing an existing document 的文档):

var signature = new PdfSignature(loadedDocument, page, certificate, "Signature");
signature.Certificate = certificate;
signature.Bounds = new RectangleF(100, 100, 200, 200);
signature.Appearence.Normal.Graphics.DrawRectangle(PdfBrushes.Red, new RectangleF(0, 0, 200, 200));

当我在现有 PDF 上使用它时,福昕阅读器中会识别签名:

enter image description here

但不是在 Adob​​e Reader 中:

enter image description here

这是 resulting PDF进行分析。

这是为什么?我能做些什么来解决这个问题,以便 Adob​​e 能够识别它吗?

编辑

这是 original PDF在对它做任何事情之前。

解决方案

我使用了 Syncfusion's own Nuget server 中的 Nuget 包,这是最新的(Nuget.org 上的不是)。

最佳答案

这个答案集中在第一个问题上:

Why is this?

由于我对 Syncfusion PDF 库没有任何经验,所以我无法告诉您具体是什么

can do to fix this so that Adobe will recognize it.

PDF对象结构

Screenshot of Catalog contents

splinter 的字段层次结构

在上面的屏幕截图中,可以看到在 AcroForm 字典中,Fields 数组只有一个条目,即字段对象 12 0

字段对象 12 0 只有一个本地名称(T 的值:“Signature”)和一个 Kids 后代字段对象数组包含单个后代条目,字段对象 9 0

字段对象 9 0 也有一个本地名称(也是“Signature”;因此它的完全限定字段名称是 Signature.Signature)和许多其他条目,大部分他们可以使用签名字段和小部件。它没有Parent条目。

根据 PDF 规范,字段中的 Parent 条目是

Required if this field is the child of another in the field hierarchy

(ISO 32000-1, Table 220 – Entries common to all field dictionaries)

文档的单个页面(对象 5 0)在其 Annots 引用中引用字段对象 9 0 作为小部件注释。

因此,来自 AcroForm 字典 Fields 数组的字段对象 9 0 是另一个字段的后代,并且具有完全限定名称 Signature.Signature

但是来自页面的Annots,字段对象9 0 没有父级,因此显示为具有完全限定名称的根字段签名

因此,签名字段的身份不明确。

请求重绘

此外,在上面的对象结构中,AcroForm 字典中的 NeedAppearances 标志设置为 true

这会询问 PDF 查看器

to construct appearance streams and appearance dictionaries for all widget annotations in the document.

(ISO 32000-1, Table 218 – Entries in the interactive form dictionary)

在本教程中,众所周知,Adobe Reader 可以删除结构损坏的注释。如上所述,您的签名字段的字段结构已损坏。

更多特性

签名域的一些条目有些奇特:

  • BSMK 是用于为小部件生成标准外观的数据。不过,通常情况下,可见签名会带来他们的自定义签名外观,您的签名也是如此。那么这些值有什么用呢?
  • DA,用于格式化可变文本注释文本的默认外观字符串,例如FreeText 注释或文本字段,但为什么要在签名字段中使用 DA

做什么

显然应该清除错误和特性。如上所述,我对 Syncfusion PDF 库没有任何经验,所以我无法告诉您具体如何操作。

但有一个提示:我怀疑 Syncfusion PDF 库在创建签名时会定期创建此类废话,因此您要签名的文档很可能有一些特殊之处,请检查一下。例如。如果原始文档已经包含名为“Signature”的表单字段,则损坏的结构可能是某些 Syncfusion 代码试图将新签名字段与旧字段合并的结果。

关于PDF 在 Foxit Reader 而不是 Adob​​e Reader 中显示签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45451470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com