【问题标题】:Fill and sign for PDF file not working using Acrobat Reader DC无法使用 Acrobat Reader DC 填写并签署 PDF 文件
【发布时间】:2020-06-18 06:40:27
【问题描述】:

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

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

从代码生成的完全有效的 PDF。但是,在使用 Acrobat Reader DC 时,我无法使用 Fill And Sign - 在尝试签名时,它会引发以下错误:

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

Foxit Reader 对其中任何一个都没有问题 - 填写和签名都可以正常工作。

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

问题是:为什么第一个不行,第二个不行?

【问题讨论】:

    标签: pdf acrobat


    【解决方案1】:

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

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

    我刚刚完成了与 Adob​​e 的 4 个月的电子邮件支持交流,这是他们的最终答复。

    【讨论】:

      【解决方案2】:

      在您的非工作文件中,所有字体都使用

      定义
      /FirstChar 30
      /LastChar 255
      

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

      向每个 Widths 数组添加两个条目后,此处的 Adob​​e Reader 在 Fill And Sign 期间不再遇到该未知错误。


      当 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 ']' '>' '>'
      

      【讨论】:

      • 您能否告诉我您的更改,确切地?如果我能完成这项工作,我会接受你的回答,谢谢!
      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      相关资源
      最近更新 更多