C#和vb.net實(shí)現(xiàn)PDF 添加可視化和不可見(jiàn)數(shù)字簽名
本文通過(guò)C#程序代碼展示如何給PDF文檔添加可視化數(shù)字簽名和不可見(jiàn)數(shù)字簽名。可視化數(shù)字簽名,即在PDF文檔中的指定頁(yè)面位置添加簽名,包含相關(guān)文字信息和簽名圖片等;不可見(jiàn)數(shù)字簽名,即添加簽名時(shí)不在文檔中指定簽名位置,在文檔正文中不顯示相關(guān)數(shù)字簽名信息。
這里簽名是通過(guò)PdfOrdinarySignatureMaker類提供的的接口來(lái)實(shí)現(xiàn)簽名,在添加可視化簽名時(shí),通過(guò)IPdfSignatureAppearance類提供的接口來(lái)設(shè)置簽名的具體位置,簽名圖片等。
下面是具體實(shí)現(xiàn)方法和步驟,供參考。
1. 在VS程序中通過(guò)Nuget安裝 Spire.PDF for .NET 版本7.8.2,安裝步驟如下:
鼠標(biāo)右鍵點(diǎn)擊“引用”,“管理Nuget包”
點(diǎn)擊“瀏覽”,在搜索框中輸入“Spire.PDF ”,點(diǎn)擊選擇搜索到的包,點(diǎn)擊“安裝”。
在彈出的窗口點(diǎn)擊“OK”
等待安裝完成。安裝結(jié)果如圖:
2.在VS程序中添加如下代碼添加數(shù)字簽名
2.1 添加可視化數(shù)字簽名
C#
using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Interactive.DigitalSignatures; using System.Drawing; using System.Security.Cryptography.X509Certificates; namespace VisibleDigitalSignature { class Program { static void Main(string[] args) { //加載PDF測(cè)試文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("test.pdf"); //獲取PDF文檔中的第5頁(yè) PdfPageBase page = pdf.Pages[4]; //在頁(yè)面中的指定位置添加可視化簽名 X509Certificate2 x509 = new X509Certificate2("cer.pfx", "e-iceblue"); PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(pdf, x509); IPdfSignatureAppearance signatureAppearance = new PdfCustomSignatureAppearance(); signatureMaker.MakeSignature("signName_" , page, page.ActualSize.Width-240,page.ActualSize.Height-200,150,150, signatureAppearance); //保存文檔 pdf.SaveToFile("VisibleDigitalSignature.pdf", FileFormat.PDF); System.Diagnostics.Process.Start("VisibleDigitalSignature.pdf"); pdf.Close(); } public class PdfCustomSignatureAppearance : IPdfSignatureAppearance { public void Generate(PdfCanvas g) { float fontSize = 15; PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", fontSize), true); float lineHeight = fontSize; g.DrawString("Sign Here:", font, PdfBrushes.Black, new PointF(0, 0)); g.DrawImage(PdfImage.FromFile("sign.png"), new PointF(20, 20)); } } } }
Vb.net
Imports Spire.Pdf Imports Spire.Pdf.Graphics Imports Spire.Pdf.Interactive.DigitalSignatures Imports System.Drawing Imports System.Security.Cryptography.X509Certificates Namespace VisibleDigitalSignature Class Program Private Shared Sub Main(args As String()) '加載PDF測(cè)試文檔 Dim pdf As New PdfDocument() pdf.LoadFromFile("test.pdf") '獲取PDF文檔中的第5頁(yè) Dim page As PdfPageBase = pdf.Pages(4) '在頁(yè)面中的指定位置添加可視化簽名 Dim x509 As New X509Certificate2("cer.pfx", "e-iceblue") Dim signatureMaker As New PdfOrdinarySignatureMaker(pdf, x509) Dim signatureAppearance As IPdfSignatureAppearance = New PdfCustomSignatureAppearance() signatureMaker.MakeSignature("signName_", page, page.ActualSize.Width - 240, page.ActualSize.Height - 200, 150, 150, _ signatureAppearance) '保存文檔 pdf.SaveToFile("VisibleDigitalSignature.pdf", FileFormat.PDF) System.Diagnostics.Process.Start("VisibleDigitalSignature.pdf") pdf.Close() End Sub Public Class PdfCustomSignatureAppearance Implements IPdfSignatureAppearance Public Sub Generate(g As PdfCanvas) Dim fontSize As Single = 15 Dim font As New PdfTrueTypeFont(New Font("Arial", fontSize), True) Dim lineHeight As Single = fontSize g.DrawString("Sign Here:", font, PdfBrushes.Black, New PointF(0, 0)) g.DrawImage(PdfImage.FromFile("sign.png"), New PointF(20, 20)) End Sub End Class End Class End Namespace
可視化數(shù)字簽名效果:
2.2 添加不可見(jiàn)數(shù)字簽名
C#
using Spire.Pdf; using Spire.Pdf.Interactive.DigitalSignatures; using System.Security.Cryptography.X509Certificates; namespace InvisibleDigitalSignature { class Program { static void Main(string[] args) { //初始化一個(gè)PdfDocument實(shí)例 PdfDocument pdf = new PdfDocument(); //加載PDF文檔 pdf.LoadFromFile("test.pdf"); //添加簽名 X509Certificate2 x509 = new X509Certificate2("cer.pfx", "e-iceblue"); PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(pdf, x509); signatureMaker.MakeSignature("signName"); signatureMaker.SetLocation("Chengdu"); signatureMaker.SetReason("Edit limited"); //保存文檔 pdf.SaveToFile("result.pdf", FileFormat.PDF); System.Diagnostics.Process.Start("result.pdf"); } } }
Vb.net
Imports Spire.Pdf Imports Spire.Pdf.Interactive.DigitalSignatures Imports System.Security.Cryptography.X509Certificates Namespace InvisibleDigitalSignature Class Program Private Shared Sub Main(args As String()) '初始化一個(gè)PdfDocument實(shí)例 Dim pdf As New PdfDocument() '加載PDF文檔 pdf.LoadFromFile("test.pdf") '添加簽名 Dim x509 As New X509Certificate2("cer.pfx", "e-iceblue") Dim signatureMaker As New PdfOrdinarySignatureMaker(pdf, x509) signatureMaker.MakeSignature("signName") signatureMaker.SetLocation("Chengdu") signatureMaker.SetReason("Edit limited") '保存文檔 pdf.SaveToFile("result.pdf", FileFormat.PDF) System.Diagnostics.Process.Start("result.pdf") End Sub End Class End Namespace
不可見(jiàn)數(shù)字簽名效果:
到此這篇關(guān)于C#和vb.net實(shí)現(xiàn)PDF 添加可視化和不可見(jiàn)數(shù)字簽名的文章就介紹到這了,更多相關(guān)C# PDF 數(shù)字簽名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#簡(jiǎn)單實(shí)現(xiàn)發(fā)送socket字符串
這篇文章主要為大家詳細(xì)介紹了C#簡(jiǎn)單實(shí)現(xiàn)socket字符串發(fā)送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09C#Js時(shí)間格式化問(wèn)題簡(jiǎn)單實(shí)例
這篇文章介紹了C#Js時(shí)間格式化問(wèn)題簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-10-10Unity3D獲取當(dāng)前鍵盤(pán)按鍵及Unity3D鼠標(biāo)、鍵盤(pán)的基本操作
這篇文章主要介紹了Unity3D獲取當(dāng)前鍵盤(pán)按鍵及Unity3D鼠標(biāo)、鍵盤(pán)的基本操作的相關(guān)資料,需要的朋友可以參考下2015-11-11C# 使用動(dòng)態(tài)庫(kù)DllImport("kernel32")讀寫(xiě)ini文件的步驟
kernel32.dll是Windows中非常重要的32位動(dòng)態(tài)鏈接庫(kù)文件,屬于內(nèi)核級(jí)文件,這篇文章主要介紹了C# 利用動(dòng)態(tài)庫(kù)DllImport("kernel32")讀寫(xiě)ini文件,需要的朋友可以參考下2023-05-05C# 構(gòu)造函數(shù)如何調(diào)用虛方法
這篇文章主要介紹了C# 構(gòu)造函數(shù)如何調(diào)用虛方法,文中講解非常詳細(xì),示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07