您好,你好我告诉你我的问题。在我的工作中,他们使用数字签名来验证pdf文件,然后将这些文件传递给那些申请的人(那些请求不属于公司的人),因此在pdf中必须使用签名者的数据进行签名。签名是使用adobe助手完成的,并使用安装在计算机上的数字签名令牌。那些必须签署的人每天签署约200 pdf。所以我正在用C sharp开发一个桌面应用程序,允许我一次签署所有的pdf,因为有了adobe,他们必须打开pdf,创建一个签名字段,放入令牌密钥,然后只显示签名,这根据当天乘以100或200。从我的研究中可以做到。到目前为止我所拥有的是一个按钮,它打开一个对话框,允许您选择要签名的所有pdf。然后打开Windows证书存储区以选择要签名的证书的另一个按钮。但我无法创建一个字段并插入签名,事先询问令牌的密钥。 ////使用下面的方法我打开证书库并选择一个签名
private void btnExplorar_Click(object sender, EventArgs e)
{
X509Store store= new X509Store(StoreName.My,StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Lista de Certificados digitales instalados en su equipo", "Seleccion el certificado con el que desea firmar", X509SelectionFlag.SingleSelection);
// X509Certificate2 certificadoElegido = scollection[0];
if (scollection.Count > 0)
{
certificadoElegido = scollection[0];//certificadoElegido is a class variable
}
使用这种方法我滚动一个列表框,其中包含所有选定pdf的列表以进行签名,我尝试创建一个字段,但我不知道如何在pdf中创建该字段并进行签名。我当然需要在pdf中看到签名,以便申请人知道谁签了它
private void button1_Click(object sender, EventArgs e)
{
if (cLBoxListadePdf.CheckedItems.Count!=0) {
string pdfAFirmar;
int i;
for (i=0;i<=cLBoxListadePdf.CheckedItems.Count-1;i++) {
pdfAFirmar = cLBoxListadePdf.CheckedItems[i].ToString();
PdfReader pdf = new PdfReader(pdfAFirmar);
PdfStamper stamper = PdfStamper.CreateSignature(pdf,new FileStream("C:\\Users\...", FileMode.Create), '\0');
PdfSignatureAppearance sap = stamper.SignatureAppearance;
sap.Reason = "";
//sap.Location=100;
stamper.Close();
}
}
}
欢迎任何关于如何完成这项工作的建议。 对不起我的英语我使用谷歌翻译。