最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)PDF簽名時(shí)添加時(shí)間戳的2種方法(附VB.NET代碼)

 更新時(shí)間:2021年05月28日 09:20:35   作者:E-iceblue  
在PDF添加簽名時(shí),支持添加可信時(shí)間戳來(lái)保證文檔的法律效應(yīng)。本文,將通過(guò)C#程序代碼介紹如何添加可信時(shí)間戳,可通過(guò)2種方法來(lái)實(shí)現(xiàn)。感興趣的可以了解一下

在PDF添加簽名時(shí),支持添加可信時(shí)間戳來(lái)保證文檔的法律效應(yīng)。本文,將通過(guò)C#程序代碼介紹如何添加可信時(shí)間戳,可通過(guò)2種方法來(lái)實(shí)現(xiàn)。文中附上VB.NET代碼,有需可供參考。

一、程序運(yùn)行環(huán)境

  • 編譯環(huán)境:Visual Studio/.NetFramework 4.8
  • 所需測(cè)試文件:PDF、.pfx數(shù)字證書及秘鑰、PDF類庫(kù)(spire.pdf.dll 7.5.7)
  • 可信時(shí)間戳服務(wù)器:URL地址

注:VS程序中,在“解決方案資源管理器中”先引用spire.pdf.dll文件,如下圖,

這里可以通過(guò)Nuget下載該文件?;蛘咴?a rel="external nofollow" target="_blank" >手動(dòng)下載引用,dll文件在下載后的文件包BIN文件夾下,如本次測(cè)試使用的是.NET4.0下面的dll,即spire.pdf_7.5.7\BIN\NET4.0\Spire.Pdf.dll,如圖:

二、程序代碼

添加簽名時(shí),這里可分別通過(guò)兩個(gè)類來(lái)實(shí)現(xiàn),即PdfSignature 和 PdfOrdinarySignatureMaker類。下面分別以兩個(gè)代碼示例展示如何簽名并添加時(shí)間戳。

1. 通過(guò)PdfSignature類來(lái)簽名,添加時(shí)間戳

C#

using Spire.Pdf;
using Spire.Pdf.Security;
using System.Drawing;

namespace TimeStamp
{
    class Program
    {
        static void Main(string[] args)
        {
            //加載PDF文檔
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("sample.pdf");

            //獲取第2頁(yè)
            PdfPageBase page = pdf.Pages[1];

            //加載數(shù)字證書(.pfx文件及秘鑰)
            PdfCertificate cert = new PdfCertificate("test.pfx", "123456");

            //加載簽名圖片
            Spire.Pdf.Graphics.PdfImage image = Spire.Pdf.Graphics.PdfImage.FromFile("sign.png");

            //添加與圖片大小相同的簽名到第2頁(yè)指定坐標(biāo)位置
            PdfSignature signature = new PdfSignature(page.Document, page, cert, "sign1");//添加數(shù)字簽名
            signature.Bounds = new RectangleF(new PointF(400,700), new SizeF(image.Width, image.Height));//設(shè)置簽名的頁(yè)面坐標(biāo)位置、大小與圖片相同
            signature.SignImageSource = image;
            signature.GraphicsMode = Spire.Pdf.Security.GraphicMode.SignImageAndSignDetail;//設(shè)置簽名為圖片模式
            signature.SignImageLayout = Spire.Pdf.Security.SignImageLayout.Stretch;
            signature.DocumentPermissions = Spire.Pdf.Security.PdfCertificationFlags.AllowFormFill | Spire.Pdf.Security.PdfCertificationFlags.AllowComments;//文檔權(quán)限           

            //配置時(shí)間戳服務(wù)器,添加時(shí)間戳
            string url = "Your TimeStamp Server URL";
            signature.ConfigureTimestamp(url);
            //signature.ConfigureTimestamp(url, "Author", "123654");//添加時(shí)間戳?xí)r設(shè)置用戶名和密碼
            

            //保存文檔
            pdf.SaveToFile("TimeStamp1.pdf",FileFormat.PDF);
            System.Diagnostics.Process.Start("TimeStamp1.pdf");
        }
    }
}

VB.NET

Imports Spire.Pdf
Imports Spire.Pdf.Security
Imports System.Drawing

Namespace TimeStamp
    Class Program
        Private Shared Sub Main(args As String())
            '加載PDF文檔
            Dim pdf As New PdfDocument()
            pdf.LoadFromFile("sample.pdf")

            '獲取第2頁(yè)
            Dim page As PdfPageBase = pdf.Pages(1)

            '加載數(shù)字證書(.pfx文件及秘鑰)
            Dim cert As New PdfCertificate("test.pfx", "123456")

            '加載簽名圖片
            Dim image As Spire.Pdf.Graphics.PdfImage = Spire.Pdf.Graphics.PdfImage.FromFile("sign.png")

            '添加與圖片大小相同的簽名到第2頁(yè)指定坐標(biāo)位置
            Dim signature As New PdfSignature(page.Document, page, cert, "sign1")

            '添加數(shù)字簽名
            signature.Bounds = New RectangleF(New PointF(400, 700), New SizeF(image.Width, image.Height))

            '設(shè)置簽名的頁(yè)面坐標(biāo)位置、大小與圖片相同
            signature.SignImageSource = image
            signature.GraphicsMode = Spire.Pdf.Security.GraphicMode.SignImageAndSignDetail

            '設(shè)置簽名為圖片模式
            signature.SignImageLayout = Spire.Pdf.Security.SignImageLayout.Stretch
            signature.DocumentPermissions = Spire.Pdf.Security.PdfCertificationFlags.AllowFormFill Or Spire.Pdf.Security.PdfCertificationFlags.AllowComments'文檔權(quán)限           

            '配置時(shí)間戳服務(wù)器,添加時(shí)間戳
            Dim url As String = "Your TimeStamp Server URL"
            signature.ConfigureTimestamp(url)
            'signature.ConfigureTimestamp(url, "Author", "123654");//添加時(shí)間戳?xí)r設(shè)置用戶名和密碼

            '保存文檔
            pdf.SaveToFile("TimeStamp1.pdf", FileFormat.PDF)
            System.Diagnostics.Process.Start("TimeStamp1.pdf")
        End Sub
    End Class
End Namespace

簽名時(shí)間戳添加結(jié)果:

2. 通過(guò)PdfOrdinarySignatureMaker類來(lái)簽名,添加時(shí)間戳

C#

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

namespace TimeStamp2
{
    class Program
    {
        static void Main(string[] args)
        {
            //加載PDF文檔
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("sample.pdf");

            //加載pfx數(shù)字證書及秘鑰
            X509Certificate2 x509 = new X509Certificate2("test.pfx", "123456");

            //實(shí)例化PdfPKCS7Formatter類的對(duì)象
            PdfPKCS7Formatter formatter = new PdfPKCS7Formatter(x509, false);
            formatter.TimestampService = new TSAHttpService("Your TimeStamp Server URL");//配置時(shí)間戳服務(wù)器

            //添加簽名
            PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(doc, formatter);            
            IPdfSignatureAppearance signatureAppearance = new PdfCustomSignatureAppearance();
            signatureMaker.MakeSignature("sign", doc.Pages[1], 400, 650, 150, 80, signatureAppearance);
            
            //保存簽名后的PDF文檔
            doc.SaveToFile("TimeStamp2.pdf", FileFormat.PDF);
            System.Diagnostics.Process.Start("TimeStamp2.pdf");

        }
        public class PdfCustomSignatureAppearance : IPdfSignatureAppearance
        {
            public void Generate(PdfCanvas canvas)
            {
                PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 12), true);
                canvas.DrawString("SIGNED! A CLASS.\n By Tom Smith", font, PdfBrushes.Red, new PointF(0, 0));
            }
        }
    }
}

VB.NET

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Interactive.DigitalSignatures
Imports System.Drawing
Imports System.Security.Cryptography.X509Certificates

Namespace TimeStamp2
    Class Program
        Private Shared Sub Main(args As String())
            '加載PDF文檔
            Dim doc As New PdfDocument()
            doc.LoadFromFile("sample.pdf")

            '加載pfx數(shù)字證書及秘鑰
            Dim x509 As New X509Certificate2("test.pfx", "123456")

            '實(shí)例化PdfPKCS7Formatter類的對(duì)象
            Dim formatter As New PdfPKCS7Formatter(x509, False)
            formatter.TimestampService = New TSAHttpService("Your TimeStamp Server URL")
            '配置時(shí)間戳服務(wù)器
            
'添加簽名
            Dim signatureMaker As New PdfOrdinarySignatureMaker(doc, formatter)
            Dim signatureAppearance As IPdfSignatureAppearance = New PdfCustomSignatureAppearance()
            signatureMaker.MakeSignature("sign", doc.Pages(1), 400, 650, 150, 80, _
                signatureAppearance)

            '保存簽名后的PDF文檔
            doc.SaveToFile("TimeStamp2.pdf", FileFormat.PDF)
            System.Diagnostics.Process.Start("TimeStamp2.pdf")

        End Sub
        Public Class PdfCustomSignatureAppearance
            Implements IPdfSignatureAppearance
            Public Sub Generate(canvas As PdfCanvas)
                Dim font As New PdfTrueTypeFont(New Font("Arial", 12), True)
                canvas.DrawString("SIGNED! A CLASS." & vbLf & " By Tom Smith", font, PdfBrushes.Red, New PointF(0, 0))
            End Sub
        End Class
    End Class
End Namespace

簽名時(shí)間戳添加結(jié)果:

到此這篇關(guān)于C#實(shí)現(xiàn)PDF簽名時(shí)添加時(shí)間戳的2種方法(附VB.NET代碼)的文章就介紹到這了,更多相關(guān)C# PDF簽名添加時(shí)間戳 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#數(shù)據(jù)庫(kù)操作小結(jié)

    C#數(shù)據(jù)庫(kù)操作小結(jié)

    每次做項(xiàng)目都會(huì)用到數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)的操作都是糊里糊涂從書里找代碼用。通過(guò)昨天晚上與今天早上的努力,把數(shù)據(jù)庫(kù)的操作整理了一下,下面把整理結(jié)果做個(gè)小結(jié)
    2012-09-09
  • C#中string用法實(shí)例詳解

    C#中string用法實(shí)例詳解

    這篇文章主要介紹了C#中string用法,非常詳細(xì)的總結(jié)了比較常見的關(guān)于C#中string的幾個(gè)常用方法,需要的朋友可以參考下
    2014-08-08
  • Unity實(shí)現(xiàn)UI光暈效果(發(fā)光效果)

    Unity實(shí)現(xiàn)UI光暈效果(發(fā)光效果)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)UI光暈效果,發(fā)光效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • C#實(shí)現(xiàn)簡(jiǎn)單的二叉查找樹

    C#實(shí)現(xiàn)簡(jiǎn)單的二叉查找樹

    這篇文章介紹了C#實(shí)現(xiàn)二叉查找樹的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 一文詳解C#?Chart控件

    一文詳解C#?Chart控件

    這篇文章主要介紹了一文學(xué)習(xí)C#?Chart控件,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • C# 9.0 新特性之模式匹配簡(jiǎn)化的實(shí)現(xiàn)

    C# 9.0 新特性之模式匹配簡(jiǎn)化的實(shí)現(xiàn)

    這篇文章主要介紹了C# 9.0 新特性之模式匹配簡(jiǎn)化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 舉例講解C#編程中對(duì)設(shè)計(jì)模式中的單例模式的運(yùn)用

    舉例講解C#編程中對(duì)設(shè)計(jì)模式中的單例模式的運(yùn)用

    這篇文章主要介紹了C#編程中對(duì)設(shè)計(jì)模式中的單例模式的運(yùn)用,單例模式在.NET框架的相關(guān)開發(fā)中也被經(jīng)常用到,需要的朋友可以參考下
    2016-02-02
  • dotnet core鏈接mongodb代碼實(shí)例

    dotnet core鏈接mongodb代碼實(shí)例

    這篇文章主要介紹了dotnet core鏈接mongodb代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • C#操作注冊(cè)表的方法

    C#操作注冊(cè)表的方法

    這篇文章主要介紹了C#操作注冊(cè)表的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • c# 反射用法及效率對(duì)比

    c# 反射用法及效率對(duì)比

    這篇文章主要介紹了c# 反射用法及效率對(duì)比,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02

最新評(píng)論

永济市| 鹤山市| 沙河市| 威宁| 明溪县| 长寿区| 股票| 盐源县| 贵州省| 六枝特区| 彭泽县| 洪江市| 建水县| 剑河县| 宁河县| 牙克石市| 梁河县| 紫阳县| 当阳市| 巫溪县| 广汉市| 喀喇沁旗| 加查县| 洮南市| 沙雅县| 福鼎市| 明水县| 高要市| 玉田县| 鄂温| 塔河县| 南岸区| 临漳县| 洪泽县| 大悟县| 和硕县| 喀喇沁旗| 博爱县| 德江县| 嘉义市| 额尔古纳市|