填写并签名 PDF 文件无法使用 Acrobat Reader DC



我在这里问这个问题是因为鉴于我所做的搜索,Adobe的支持似乎几乎不存在。根据这个在线验证工具,我有:

https://www.pdf-online.com/osa/validate.aspx

完全有效的 PDF,由代码生成。但是,使用 Acrobat Reader DC 时,我无法使用"填写并签名"-尝试签名时,会引发此错误:

The operation failed because Adobe Acrobat encountered an unknown error

这是有问题的 PDF:

https://github.com/DelphiWorlds/MiscStuff/blob/master/Test/PDF/SigningNoWork.pdf

这是一个非常相似的,填写和签名工作:

https://github.com/DelphiWorlds/MiscStuff/blob/master/Test/PDF/SigningWorks.pdf

福昕阅读器对它们中的任何一个都没有问题 - 填写和签名可以正常工作。

我会发布文件的来源,但是因为它们有二进制数据,我认为指向它们的链接更好。

问题是:为什么第一个不起作用,而第二个不起作用?

在您的非工作文件中,所有字体都定义

/FirstChar 30
/LastChar 255

即有 226 个字形。但是,它们各自的Widths数组只有 224 个条目,因此它们不完整。

在每个宽度数组中添加两个条目后,此处的Adobe Reader在填写并签名期间不再遇到该未知错误。


正如 OP 询问我究竟是如何更改这些宽度数组的

:我希望更改具有尽可能少的副作用,因此我很高兴看到有问题的字体词典中有一些空白区域,因此进行简单的十六进制编辑就足够了,无需移动间接对象和更新交叉引用:

在对象 5、7、9 和 11 中的每个字体定义中,Widths数组是最后一个字典条目值,并以一些空格结尾,在最后一个宽度之后我们有这些字节:

20 0D 0A 5D 0D 0A 3E 3E --- space CR NL ']' CR NL '>' '>'

我使用空格添加了两个 0 值:

20 30 20 30 20 5D 3E 3E --- space '0' space '0' space ']' '>' '>'

Acrobat Reader DC - 免费版本,如果您的文档附加了元数据,则不再允许您进行填充和签名。

您需要购买Pro DC版本,价格为14.99美元,才能继续使用此处的填充和登录。

我刚刚完成了与Adobe的4个月的支持电子邮件交换,这是他们的最终答案。

最新更新