【问题标题】:Placing signature in multiple location on same page while signing a PDF签署 PDF 时在同一页面上的多个位置放置签名
【发布时间】:2018-03-23 18:34:07
【问题描述】:

我想在 PDF 的多个位置放置同一个外部签名的签名容器(签名值)。

我已引用页面“How to place the Same Digital signatures to Multiple places in PDF using itextsharp.net”。

在使用上述解决方法时,我观察到,每当我尝试在单个页面上放置多个签名 4-5 次时,它都没有成功。始终只显示一个有效的签名字段,其他字段显示为未签名(未签名的 PDF 表单字段)。所以无法理解问题所在。

现在我想知道是否有任何参考资料可以查看 PdfLiteral 和 PdfIndirectReference 的工作原理?我已经浏览了 itextsharp 参考文档,但无法获得足够的信息。除此之外,在 PDF 中可以添加多少个注释/签名字段是否有任何限制? 如果我必须使用 BlankSignatureContainer 和 MakeSignature.SignDeferred 那么签名将如何附加到所有字段,因为在,

MakeSignature.SignDeferred(pdfreader, "Sig", output, externalcontainer)

我们只需要传递一个签名字段名称。

谢谢。

【问题讨论】:

    标签: c# itext


    【解决方案1】:

    你要的是 mkl 写的东西:

    注意:虽然此过程会创建不违反的内容 PDF 规范的字母(仅禁止大小写 从多个页面引用相同的字段对象,无论是 通过相同或不同的小部件),它显然确实违反了它的 意图,它的精神。因此,此过程也可能被禁止作为规范的勘误文档的一部分。

    实际上,您所要求的确实违反了规范。请参阅 PDF 的 ISO 标准第 12.7.5.5 节:

    请允许我重复此屏幕截图的最后一行:

    签名字段不得引用多个注释。

    这句话中有一个shall,而不是should。 A 应该不是规范的。这意味着您应该或不应该做某事,但如果不做或不做,您不会违反规范。不尊重会导致 PDF 文档违反 PDF 规范,并且严格意义上的不是真正的 PDF 文件。

    这是您不想走的路,因为违反 PDF 规范会使您失去使用 Adob​​e 拥有的一系列 PDF 专利的权利。 Adobe 拥有所有人都可以免费使用的专利(永久、非独占、免版税......)在您尊重 ISO 规范的条件下

    因此,除了建议放弃您的要求之外,请不要期望您的问题得到答案。符合 PDF 规范的 PDF 查看器不会期望将单个签名放置在不同的位置,因为规范不允许这样做,因此即使您将调整您的软件以为单个签名创建多个小部件注释/外观字段,不能保证 PDF 查看器会理解您要执行的操作。

    【讨论】:

    • 注明。会试图说服这里的人。如果可能的话,你能告诉我,为什么它的行为像上面提到的那样,“每当我试图在一个页面上放置多个签名 4-5 次时,它从来没有工作过”.. 这是关于由提供的解决方法mkl
    • “它从来没有用过”是too cryptic to comment on。我的猜测:适应规范的 PDF 查看器不再显示其他小部件。无论如何:它没有理由工作。
    • 好的。实际上,我已经在原始问题中解释了这个问题,说“始终只显示一个有效的签名字段,而其他字段未签名(未签名的 PDF 表单字段)。”当任何页面有 2-3 个签名字段时,所有签名都是有效的。如果超出此范围,则只有一个字段获得签名,其他字段保持未签名。
    • @Ktan 间接引用引用了一个间接 PDF 对象,即,一个对象被赋予了一个可以引用的对象编号。在手头的上下文中,必须预测将发出多少新的间接对象编号,直到 iText 代码请求签名值对象的间接对象编号。正如同时编辑到那个引用的问题一样,这个预测过程非常微妙。因此,进行概念验证运行很有趣,但该过程太脆弱,无法在生产代码中真正使用它。
    • @Ktan 请不要将代码(除非它是一个简短的单行代码)放入 cmets,这很难阅读。而是编辑您的答案以反映您的努力的当前状态。话虽如此,我看到你使用ADBE_PKCS7_SHA1。这意味着您想给客户带来不安全感。考虑使用可以认真对待的机制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    相关资源
    最近更新 更多