如何解决用iTextSharp签名PDF表单
| 我有一个PDF表单,该表单的签名字段的名称为root [0] .containerpage [0] .footer [0] .SignatureField1 [0] 我也有PFX证书。 现在的问题是,我在itextsharp的PdfStamper中打开了表单,该如何签名以便 表格已锁定更改 签名状态在提到的字段中可见 我想出了以下代码:Dim pk12 As Pkcs12Store = New Pkcs12Store(New FileStream(Application.StartupPath & \"cert.pfx\",FileMode.Open,FileAccess.Read),\"pass\".ToCharArray())
Dim i As IEnumerator = pk12.Aliases()
While (i.MoveNext())
cert_alias = (i.Current)
If (pk12.IsKeyEntry(cert_alias)) Then
Exit Sub
End If
End While
Dim akp As AsymmetricKeyParameter = pk12.GetKey(cert_alias).Key
Dim ce As X509CertificateEntry() = pk12.GetCertificateChain(cert_alias)
Dim chain() As X509Certificate( **%PROBLEM%** )
For k As Integer = 0 To ce.Length
chain(k) = ce(k).getCertificate()
Next
Dim reader As PdfReader = New PdfReader(\"pdf.pdf\")
Dim stamper As PdfStamper = PdfStamper.CreateSignature(reader,New FileStream(\"pdf.pdf\",\"pdf_signed.pdf\"),FileMode.Create,FileAccess.Write),\"\\0\")
Dim appearance As PdfSignatureAppearance = stamper.SignatureAppearance
appearance.SetVisibleSignature(\"mySig\")
appearance.Reason = \"Its personal.\"
appearance.Location = \"Foobar\"
appearance.SetCrypto(pk12,chain,Nothing,PdfSignatureAppearance.WINCER_SIGNED)
appearance.CertificationLevel = PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED
appearance.Acro6Layers = True
appearance.SignatureGraphic = Image.GetInstance(RESOURCE)
appearance.Render = PdfSignatureAppearance.SignatureRender.Graphic
stamper.Close()
但是,无法确定应该在X509CertificateStructure中将什么作为X509Certificate的参数,该代码在代码块中表示%PROBLEM%。
谢谢
解决方法
我相信应该是:
Dim chain() As X509Certificate(ce.length)
我总是对VB和数组大小声明感到困惑,因此您可能需要减去1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。