thêm chữ ký điện tử vào PDF C#

Chữ ký số được sử dụng để bảo mật các tài liệu PDF trước khi chúng được chia sẻ với bên thứ ba. Ký điện tử tài liệu PDF giúp phát hiện giả mạo bằng cách xác minh tài liệu bằng chữ ký điện tử. Để bảo mật các tài liệu PDF bằng chữ ký điện tử theo chương trình, bài viết này sẽ chỉ cho bạn cách thêm chữ ký điện tử vào tệp PDF trong C#. Bạn cũng sẽ tìm hiểu cách xác minh chữ ký điện tử trong tệp PDF bằng C#.

API C# .NET để thêm chữ ký số trong PDF

Để thêm và xác minh chữ ký số trong tài liệu PDF, chúng ta sẽ sử dụng Aspose.PDF for .NET API, API thao tác PDF mạnh mẽ để tạo, chỉnh sửa, chuyển đổi và ký điện tử tài liệu PDF. Bạn có thể tải xuống Aspose.PDF for .NET hoặc cài đặt nó bằng một trong các cách sau trong Visual Studio:

Trình quản lý gói NuGet

Ký điện tử PDF trong C#

Bảng điều khiển quản lý gói

PM> Install-Package Aspose.PDF

Thêm chữ ký số vào PDF trong C#

Sau đây là các bước để ký tài liệu PDF bằng Aspose.PDF for .NET.

  • Tạo một đối tượng của lớp Document và khởi tạo nó bằng đường dẫn của tài liệu PDF.
  • Tạo một đối tượng của lớp PdfFileSignature và khởi tạo nó với đối tượng của lớp Tài liệu.
  • Tạo một đối tượng thuộc lớp PKCS7 và khởi tạo nó bằng đường dẫn chứng chỉ và mật khẩu.
  • Tạo và khởi tạo đối tượng của lớp DocMDPSignature cho loại chữ ký MDP.
  • Tạo Rectangle để đặt chữ ký.
  • Ký điện tử tài liệu PDF bằng phương pháp PdfFileSignature.Certify().
  • Lưu tài liệu bằng phương thức PdfFileSignature.Save().

Mẫu mã sau đây cho biết cách thêm chữ ký điện tử vào tài liệu PDF trong C#.

// Tải tài liệu PDF
using (Document pdfDocument = new Document("Document.pdf"))
{
	using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
	{
		PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
		DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
		System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
		// Đặt giao diện chữ ký
		signature.SignatureAppearance = @"aspose-logo.png";
		// Tạo bất kỳ trong ba loại chữ ký
		signature.Certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
		// Lưu tệp PDF được ký điện tử
		signature.Save("Digitally Signed PDF.pdf");
	}
}

C# Thêm chữ ký số vào PDF bằng Máy chủ dấu thời gian

Bạn cũng có thể thêm chữ ký điện tử vào tài liệu PDF bằng máy chủ Dấu thời gian bằng cách cung cấp thông tin chi tiết của nó bằng cách sử dụng lớp Cài đặt dấu thời gian. Mẫu mã sau đây cho biết cách ký điện tử tài liệu PDF bằng máy chủ Dấu thời gian trong C#.

// Tải tài liệu PDF
using (Document pdfDocument = new Document("Document.pdf"))
{
	using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
	{
		PKCS7 pkcs = new PKCS7("certificate.pfx", "WebSales"); // Use PKCS7/PKCS7Detached objects
		TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
		pkcs.TimestampSettings = timestampSettings;
		System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
		// Tạo bất kỳ trong ba loại chữ ký
		signature.Sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
		// Lưu tệp PDF đầu ra
		signature.Save("Output.pdf");
	}
}

Xác minh PDF được ký điện tử trong C#

Sau đây là các bước để xác minh chữ ký số trong tài liệu PDF:

  • Tạo một đối tượng của lớp Document và khởi tạo nó bằng đường dẫn của tài liệu PDF.
  • Tạo một đối tượng của lớp PdfFileSignature và khởi tạo nó với đối tượng của lớp Tài liệu.
  • Truy cập tất cả các chữ ký của tài liệu PDF.
  • Xác minh tính hợp lệ của chữ ký bằng phương pháp PdfFileSignature.VerifySigned().

Mẫu mã sau đây cho biết cách xác minh chữ ký điện tử trong PDF bằng C#.

// Tải tài liệu PDF
using (Document pdfDocument = new Document("Document.pdf"))
{
	using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
	{
		IList<string> sigNames = signature.GetSignNames();
		if (sigNames.Count > 0) // Any signatures?
		{
			if (signature.VerifySigned(sigNames[0] as string)) // Verify first one
			{
				if (signature.IsCertified) // Certified?
				{
					if (signature.GetAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
					{
						// Làm việc gì đó
					}
				}
			}
		}
	}
}

Dùng thử miễn phí Aspose.PDF for .NET

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử và sử dụng Aspose.PDF for .NET.

Sự kết luận

Trong bài viết này, bạn đã học cách thêm chữ ký điện tử vào tệp PDF trong C#.NET. Hơn nữa, bạn đã biết cách xác minh các tệp PDF được ký điện tử theo chương trình trong C#. Bạn có thể chỉ cần cài đặt Aspose.PDF for .NET trong các ứng dụng của mình và ký điện tử các tệp PDF của bạn một cách liền mạch.

Những bài viết liên quan