Получение свойств подписи из PDF на C# и .NET

В цифровом мире обеспечение подлинности и целостности документов имеет первостепенное значение. Цифровые подписи служат этой цели, предоставляя безопасное и проверяемое средство для подписания документов. В C# и .NET разработчики могут легко считывать свойства цифровых подписей из PDF-документов, что может быть важно для проверки и аудита.

В этой статье вы узнаете, как получить доступ к информации о цифровой подписи с помощью библиотеки SautinSoft.Pdf.

Чтобы прочитать свойства цифровой подписи из PDF-документа, выполните следующие действия:

  1. Добавить SautinSoft.PDF из NuGet.
  2. Загрузить PDF-документ.
  3. Найти поле цифровой подписи.
  4. Прочитать содержимое цифровой подписи: имя, дату, место, причину, контактную информацию.
  5. Прочитать содержание сертификата.

Входной файл:

Выходной результат:

Полный код

using System;
using System.IO;
using Org.BouncyCastle.X509;
using SautinSoft;
using SautinSoft.Pdf;
using SautinSoft.Pdf.Content;
using SautinSoft.Pdf.Forms;

namespace Sample
{
    class Sample
    {
        /// <summary>
        /// Read digital signature properties from a PDF document using C# and .NET
        /// </summary>
        /// <remarks>
        /// Details: https://sautinsoft.com/products/pdf/help/net/developer-guide/read-digital-signature-properties-from-a-pdf-document-using-csharp-dotnet.php
        /// </remarks>
        static void Main(string[] args)
        {
            // Before starting this example, please get a free trial key:
            // https://sautinsoft.com/start-for-free/

            // Apply the key here:
            // PdfDocument.SetLicense("...");

            string inpFile = Path.GetFullPath(@"..\..\..\digital signature.pdf");            

            using (PdfDocument document = PdfDocument.Load(inpFile))
            {
                var field = document.Form.Fields.FirstOrDefault(f => f is PdfSignatureField);
                if (field != null && field is PdfSignatureField signField)
                {
                    Console.WriteLine($"Name: {signField.Value.Name}.");
                    Console.WriteLine($"Date: {signField.Value.Date}.");
                    Console.WriteLine($"Location: {signField.Value.Location}.");
                    Console.WriteLine($"Reason: {signField.Value.Reason}.");
                    Console.WriteLine($"ContactInfo: {signField.Value.ContactInfo}.");

                    var content = signField.Value.Content;
                    X509Certificate certificate = new X509Certificate(content.SignerCertificate.GetRawData());
                    Console.WriteLine("SignerCertificate data:");
                    Console.WriteLine(certificate);
                }
                else
                {
                    Console.WriteLine("The PDF doesn't have a digital signature!");
                }
            }
        }
    }
}

Download

Option Infer On

Imports System
Imports System.IO
Imports Org.BouncyCastle.X509
Imports SautinSoft
Imports SautinSoft.Pdf
Imports SautinSoft.Pdf.Content
Imports SautinSoft.Pdf.Forms

Namespace Sample
	Friend Class Sample
		''' <summary>
		''' Read digital signature properties from a PDF document using C# and .NET
		''' </summary>
		''' <remarks>
		''' Details: https://sautinsoft.com/products/pdf/help/net/developer-guide/read-digital-signature-properties-from-a-pdf-document-using-csharp-dotnet.php
		''' </remarks>
		Shared Sub Main(ByVal args() As String)
			' Before starting this example, please get a free trial key:
			' https://sautinsoft.com/start-for-free/

			' Apply the key here:
			' PdfDocument.SetLicense("...");

			Dim inpFile As String = Path.GetFullPath("..\..\..\digital signature.pdf")

			Using document As PdfDocument = PdfDocument.Load(inpFile)
				Dim field = document.Form.Fields.FirstOrDefault(Function(f) TypeOf f Is PdfSignatureField)
				Dim tempVar As Boolean = TypeOf field Is PdfSignatureField
				Dim signField As PdfSignatureField = If(tempVar, CType(field, PdfSignatureField), Nothing)
				If field IsNot Nothing AndAlso tempVar Then
					Console.WriteLine($"Name: {signField.Value.Name}.")
					Console.WriteLine($"Date: {signField.Value.Date}.")
					Console.WriteLine($"Location: {signField.Value.Location}.")
					Console.WriteLine($"Reason: {signField.Value.Reason}.")
					Console.WriteLine($"ContactInfo: {signField.Value.ContactInfo}.")

					Dim content = signField.Value.Content
					Dim certificate As New X509Certificate(content.SignerCertificate.GetRawData())
					Console.WriteLine("SignerCertificate data:")
					Console.WriteLine(certificate)
				Else
					Console.WriteLine("The PDF doesn't have a digital signature!")
				End If
			End Using
		End Sub
	End Class
End Namespace

Download


Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.