Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在签署PDF文件时将签名放置在同一页面的多个位置_C#_Itext - Fatal编程技术网

C# 在签署PDF文件时将签名放置在同一页面的多个位置

C# 在签署PDF文件时将签名放置在同一页面的多个位置,c#,itext,C#,Itext,我想在PDF中的多个位置放置相同的外部签名容器(签名值) 我已引用页面“” 在处理上述工作时,我注意到,每当我尝试在一个页面上放置多个签名时,比如4-5次,都是行不通的。始终仅显示一个有效签名字段,其他字段显示为未签名(未签名PDF表单字段)。所以我无法理解这个问题 现在我想知道是否有任何参考资料可用于了解PdfLiteral和PdfIndirectReference的工作原理?我查阅了itextsharp参考文件,但没有得到足够的信息。除此之外,在PDF中可以添加多少注释/签名字段是否有任何限

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

我已引用页面“”

在处理上述工作时,我注意到,每当我尝试在一个页面上放置多个签名时,比如4-5次,都是行不通的。始终仅显示一个有效签名字段,其他字段显示为未签名(未签名PDF表单字段)。所以我无法理解这个问题

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

MakeSignature.SignDeferred(pdfreader, "Sig", output, externalcontainer)
我们只需要传递一个签名字段名


谢谢。

你要的是mkl写的东西:

注意:当这个过程创建了一些不违反 PDF规范的信函(仅禁止此类情况) 如果从多个页面引用同一字段对象,则 通过相同或不同的小部件),它显然违反了 意图,它的精神。因此,该程序也可能被禁止作为规范勘误文件的一部分

实际上,您所询问的内容确实违反了规范。PDF格式见ISO标准第12.7.5.5节:

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

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

这句话中有一个应该,而不是应该。A应该是不规范的。这意味着你应该或不应该做某事,但如果你不做或不做,你就没有违反规范。不遵守PDF规范会导致PDF文档违反PDF规范,从严格意义上讲,它不是真正的PDF文件

这是你不想走的路,因为违反PDF规范会使你失去使用Adobe拥有的一系列PDF专利的权利。Adobe拥有可供所有人免费使用的专利(永久、非排他性、免版税等),前提是您遵守ISO规范


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

注意到。我会尽力说服这里的人。如果可能的话,你能让我知道,为什么它会像上面提到的那样,“每当我试图在一个页面上放置多个签名时,比如4-5次,它都不起作用”。。这与mkl提供的解决方案有关,即“它从未工作过”。我的猜测是:PDF查看器适应了规范,不再显示额外的小部件。在任何情况下:没有理由认为它会起作用。事实上,我在最初的问题中解释了这个问题,说“总是只显示一个有效的签名字段,其他字段显示为未签名(未签名的PDF表单字段)。”当任何页面有2-3个签名字段时,所有签名都是有效的。如果超过该值,则只有一个字段获得签名,其他字段保持未签名。@k间接引用引用一个间接PDF对象,即一个对象被指定了一个对象号,可以引用该对象。在手边的上下文中,必须预测在iText代码为签名值对象请求间接对象号之前将发布多少个新的间接对象号。正如同时被编入参考问题的那个样,这个预测过程非常微妙。正因为如此,运行概念验证非常有趣,但是这个过程太脆弱,以至于不能问心无愧地在生产代码中实际使用它。@Ktan请不要将代码(除非是简短的一行代码)放入注释中,这很难阅读。相反,编辑您的答案以反映您的努力的当前状态。话虽如此,我看到您使用了
ADBE\u PKCS7\u SHA1
。这意味着您希望给客户带来不安全感。考虑使用可以认真对待的机制。