欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#和vb.net實現PDF 添加可視化和不可見數字簽名

 更新時間:2021年08月10日 08:38:12   作者:E-iceblue  
本文通過C#程序代碼展示如何給PDF文檔添加可視化數字簽名和不可見數字簽名。文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文通過C#程序代碼展示如何給PDF文檔添加可視化數字簽名和不可見數字簽名。可視化數字簽名,即在PDF文檔中的指定頁面位置添加簽名,包含相關文字信息和簽名圖片等;不可見數字簽名,即添加簽名時不在文檔中指定簽名位置,在文檔正文中不顯示相關數字簽名信息。

這里簽名是通過PdfOrdinarySignatureMaker類提供的的接口來實現簽名,在添加可視化簽名時,通過IPdfSignatureAppearance類提供的接口來設置簽名的具體位置,簽名圖片等。

下面是具體實現方法和步驟,供參考。

1. 在VS程序中通過Nuget安裝 Spire.PDF for .NET 版本7.8.2,安裝步驟如下:

鼠標右鍵點擊“引用”,“管理Nuget包”

點擊“瀏覽”,在搜索框中輸入“Spire.PDF ”,點擊選擇搜索到的包,點擊“安裝”。

在彈出的窗口點擊“OK”

等待安裝完成。安裝結果如圖:

2.在VS程序中添加如下代碼添加數字簽名

2.1 添加可視化數字簽名

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測試文檔
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("test.pdf");

            //獲取PDF文檔中的第5頁
            PdfPageBase page = pdf.Pages[4];

            //在頁面中的指定位置添加可視化簽名
            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測試文檔
            Dim pdf As New PdfDocument()
            pdf.LoadFromFile("test.pdf")

            '獲取PDF文檔中的第5頁
            Dim page As PdfPageBase = pdf.Pages(4)

            '在頁面中的指定位置添加可視化簽名
            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

可視化數字簽名效果:

2.2 添加不可見數字簽名

C#

using Spire.Pdf;
using Spire.Pdf.Interactive.DigitalSignatures;
using System.Security.Cryptography.X509Certificates;

namespace InvisibleDigitalSignature
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化一個PdfDocument實例
            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())
            '初始化一個PdfDocument實例
            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

不可見數字簽名效果:

到此這篇關于C#和vb.net實現PDF 添加可視化和不可見數字簽名的文章就介紹到這了,更多相關C# PDF 數字簽名內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺談C# 類的繼承

    淺談C# 類的繼承

    本文主要介紹了C# 類的繼承相關知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • C#簡單實現發(fā)送socket字符串

    C#簡單實現發(fā)送socket字符串

    這篇文章主要為大家詳細介紹了C#簡單實現socket字符串發(fā)送,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • C#Js時間格式化問題簡單實例

    C#Js時間格式化問題簡單實例

    這篇文章介紹了C#Js時間格式化問題簡單實例,有需要的朋友可以參考一下
    2013-10-10
  • 學會使用C#異常

    學會使用C#異常

    在C#中,程序中在運行時出現的錯誤,會不斷在程序中進行傳播,這種機制稱為“異常”。 異常通常由錯誤的代碼引發(fā),并由能夠更正錯誤的代碼進行catch。本文將對C#異常簡要分析說明,下面就跟著小編一起來看下吧
    2016-12-12
  • Unity Shader模擬玻璃效果

    Unity Shader模擬玻璃效果

    這篇文章主要為大家詳細介紹了Unity Shader模擬玻璃效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Unity3D獲取當前鍵盤按鍵及Unity3D鼠標、鍵盤的基本操作

    Unity3D獲取當前鍵盤按鍵及Unity3D鼠標、鍵盤的基本操作

    這篇文章主要介紹了Unity3D獲取當前鍵盤按鍵及Unity3D鼠標、鍵盤的基本操作的相關資料,需要的朋友可以參考下
    2015-11-11
  • C# 使用動態(tài)庫DllImport("kernel32")讀寫ini文件的步驟

    C# 使用動態(tài)庫DllImport("kernel32")讀寫ini文件的步驟

    kernel32.dll是Windows中非常重要的32位動態(tài)鏈接庫文件,屬于內核級文件,這篇文章主要介紹了C# 利用動態(tài)庫DllImport("kernel32")讀寫ini文件,需要的朋友可以參考下
    2023-05-05
  • C# 構造函數如何調用虛方法

    C# 構造函數如何調用虛方法

    這篇文章主要介紹了C# 構造函數如何調用虛方法,文中講解非常詳細,示例代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • C# 判斷字符串為空的幾種辦法

    C# 判斷字符串為空的幾種辦法

    C# 判斷字符串為空的幾種辦法,需要的朋友可以參考一下
    2013-04-04
  • C#中的虛函數virtual

    C#中的虛函數virtual

    這篇文章介紹了C#中的虛函數virtual,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04

最新評論