本教程展示了如何添加一个数字签名证书一个PDF文件,读回签名信息在窗口一个c#控制台应用程序使用LEADTOOLS SDK。基于证书的数字签名将安全添加到文档,保证文档没有被修改。
概述 | |
---|---|
总结 | 本教程介绍了如何进行数字签名文档在c# Windows控制台应用程序。 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(5 KB) |
平台 | Windows控制台c#应用程序 |
IDE | Visual Studio 2017中,2019年 |
开发许可 | 下载LEADTOOLS |
试试用另一种语言 |
|
熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证教程,在工作之前添加一个数字签名PDF - c#控制台教程。
数字签名提供文档安全可以通过使用加密文件验证签名者的身份。
从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。
的引用需要取决于项目的目的。引用可以通过添加一个或另一个下面的两种方法(但不是全部)。
如果使用NuGet引用,本教程需要以下NuGet包:
Leadtools.Pdf
如果使用本地DLL的引用,下面的DLL是必要的。
dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64
:
Leadtools.dll
Leadtools.Pdf.dll
对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序。
许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可。
有两种类型的运行时许可证:
请注意
添加LEADTOOLS NuGet和本地引用设置许可中会详细介绍添加引用和设置一个许可证教程。
与项目创建、添加引用,许可,可以开始编码。
在解决方案资源管理器,打开Program.cs
。添加以下语句使用块的顶部Program.cs
:
使用系统;
使用先;
使用Leadtools;
使用Leadtools.Pdf;
在Main ()
方法,添加3新字符串变量命名inputFile
,outputFile
,signatureFile
。
静态无效主要(字符串[]参数)
{
SetLicense ();
字符串inputFile =@“源PDF文件路径”;
字符串outputFile =@“签名PDF输出文件路径”;
字符串signatureFile =@“文件路径可以签名文件”;
如果(CheckDigitalSignatureSupportStatus () = =假)
{
Console.WriteLine (“数字签名功能不可用。\ n”+
“确保你有开放的SSL填词:\ n”+
“//m.ahtuanjie.com/help/sdk/dh/to/lead-compiled-openssl-binaries.html”);
返回;
}
SignPDFDocument (inputFile outputFile signatureFile,“密码”);
ParsePDF (outputFile);
}
在程序
类,添加一个新方法CheckDigitalSignatureSupportStatus ()
。在调用此方法Main ()
方法在一个条件语句,如上所示。将下面的代码添加到新方法将目录设置为OpenSSL二进制文件和查看数字签名支持的状况。
公共静态boolCheckDigitalSignatureSupportStatus ()
{
RasterDefaults.SetResourceDirectory (LEADResourceDirectory.OpenSSL@“文件路径OpenSSL二进制文件目录(% LEADTOOLS22_SETUP % \ Bin \ Dotnet4 \ x64)”);
返回PDFDocument.GetDigitalSignatureSupportStatus () = = RasterExceptionCode.Success;
}
请注意
如果你没有LEAD-Compiled OpenSSL的二进制文件,你可以下载它们在这里。
接下来,添加两个方法程序
类命名signatureFile outputPdf inputPdf SignPDFDocument(字符串,字符串,字符串,字符串密码= null)
和ParsePDF(字符串文件名)
。在调用这两个方法Main ()
方法,如上所示。
将以下代码添加到SignPDFDocument ()
创建一个新的PDFFile
,进行数字签名PDF导出到指定的文件路径。
静态无效SignPDFDocument (字符串inputPdf,字符串outputPdf,字符串signatureFile,字符串密码=零)
{
试一试
{
PDFFile inputDoc =新PDFFile (inputPdf);
inputDoc。SignDocument (outputPdf、signatureFile、密码);
}
抓(异常交货)
{
Console.WriteLine (ex.Message);
返回;
}
Console.WriteLine (“签名PDF成功”);
}
将下面的代码添加到ParsePDF ()
在PDF解析方法签名,如果有的话。
静态无效ParsePDF (字符串文件名)
{
PDFDocument doc =新PDFDocument(文件名);
doc.ParsePages (PDFParsePagesOptions。签名,1,1);
Console.WriteLine ();/ /作为间隔
foreach(PDFDocumentPage页面在doc.Pages)
{
Console.WriteLine ($“页面{page.PageNumber} \ n”);
如果(page.Signatures。数= = 0)
Console.WriteLine (“这个页面上没有签名\ n”);
foreach(PDFSignature团体在page.Signatures) {
PrintSignatureValues(团体);
}
}
}
添加一个新方法程序
类命名PrintSignatureValues (PDFSignature签名)
。在调用此方法ParsePDF ()
方法,如上所示。将下面的代码添加到PrintSignatureValues ()
方法打印提取的信息PDFSignature
类,包括发行人、公钥、序列号、主题,有效的开始和结束日期,并签名的版本。
私人静态无效PrintSignatureValues (PDFSignature签名)
{
Console.WriteLine ($“发行人:{signature.CertificateInfo [PDFSignature.CertificateInfoIssuer]}”);
Console.WriteLine ($“公钥:{signature.CertificateInfo [PDFSignature.CertificateInfoPublicKey]}”);
Console.WriteLine ($“序列号:{signature.CertificateInfo [PDFSignature.CertificateInfoSerialNumber]}”);
Console.WriteLine ($“主题:{signature.CertificateInfo [PDFSignature.CertificateInfoSubject]}”);
Console.WriteLine ($“有效的开始日期:{signature.ValidFrom.ToLocalTime ()}”);
Console.WriteLine ($“有效结束日期:{signature.ValidTo.ToLocalTime ()}”);
Console.WriteLine ($“版本:{signature.Version}”);
Console.WriteLine ();/ /作为间隔
}
按运行项目F5,或通过选择调试- >开始调试。
如果是正确的步骤,应用程序运行时,给定信号与给定的数字签名PDF,然后打印出签名信息到控制台。
本教程展示如何使用数字签名证书签署一份PDF文件,并显示如何从文档的解析值数字签名。它还介绍了如何使用PDFFile
,PDFDocument
,PDFSignature
,PDFDocumentPage
类。