Chữ ký số trong PDF cho phép bạn bảo mật tài liệu trước khi chia sẻ với các bên liên quan. Việc giả mạo nội dung của tài liệu PDF được ký điện tử có thể dễ dàng bị phát hiện và xác minh. Để ký điện tử tài liệu PDF theo chương trình, tôi sẽ chỉ cho bạn cách thêm và xác minh chữ ký điện tử trong PDF bằng Java. Chúng tôi sẽ đề cập đến các tình huống sau liên quan đến chữ ký điện tử trong tệp PDF.

Thư viện Java để ký điện tử PDF

Để thêm và xác minh chữ ký điện tử trong PDF, chúng tôi sẽ sử dụng Aspose.PDF for Java. Cùng với các tính năng thao tác PDF khác, Aspose.PDF for Java cho phép bạn thêm và xác minh chữ ký số trong PDF một cách liền mạch. Bạn có thể tải xuống JAR của API hoặc cài đặt nó trong ứng dụng dựa trên Maven của bạn.

Kho:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

phụ thuộc:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.6</version>
</dependency>

Thêm chữ ký số vào PDF bằng Java

Sau đây là các bước để thêm chữ ký số vào tài liệu PDF bằng Aspose.PDF for Java.

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

Mẫu mã sau đây cho biết cách ký điện tử PDF bằng Java.

// Tạo một đối tượng Tài liệu
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
Rectangle rect = new Rectangle(100, 600, 400, 100);
// Đặt giao diện chữ ký
signature.setSignatureAppearance("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");

Ký điện tử PDF với Máy chủ dấu thời gian bằng Java

Aspose.PDF for Java cũng cho phép bạn thêm chữ ký điện tử vào PDF bằng máy chủ TimeStamp. Lớp Cài đặt dấu thời gian được sử dụng cho mục đích này. Mẫu mã sau đây cho biết cách thêm chữ ký điện tử vào tệp PDF bằng máy chủ Dấu thời gian bằng Java.

// Tạo một đối tượng Tài liệu
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
pkcs.setTimestampSettings(timestampSettings); 
Rectangle rect = new Rectangle(100, 600, 400, 100);
// Đặt giao diện chữ ký
signature.setSignatureAppearance("aspose-logo.png"); 
// 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 được ký điện tử
signature.save("Digitally Signed PDF.pdf");

Xác minh Chữ ký số trong PDF bằng Java

Khi bạn nhận được một tệp PDF được ký điện tử, bạn có thể xác minh chữ ký của nó khá dễ dàng. Sau đây là các bước để xác minh PDF được ký điện tử.

Mẫu mã sau đây cho biết cách xác minh tài liệu PDF được ký điện tử bằng Java.

// Tạo chữ ký tệp PDF
PdfFileSignature pdfSign = new PdfFileSignature();
// Ràng buộc PDF
pdfSign.bindPdf("Digitally Signed PDF.pdf");
// Xác minh chữ ký bằng tên chữ ký
if (pdfSign.verifySigned("Signature1"))
{
	if (pdfSign.isCertified()) // Certified?
	{
		if (pdfSign.getAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
		{
			// Làm việc gì đó
		}
	} 
}

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 PDF bằng Java. Ngoài ra, chúng tôi đã xem cách xác minh tệp PDF được ký điện tử trong một vài bước. Bạn có thể tìm hiểu thêm về Java PDF API bằng cách sử dụng tài liệu cũng như các mẫu mã nguồn được lưu trữ trên GitHub.

Xem thêm