PDFBox - Mã hóa tài liệu PDF

Trong chương trước, chúng ta đã biết cách chèn hình ảnh vào tài liệu PDF. Trong chương này, chúng ta sẽ thảo luận về cách mã hóa tài liệu PDF.

Mã hóa tài liệu PDF

Bạn có thể mã hóa tài liệu PDF bằng các phương pháp được cung cấp bởi StandardProtectionPolicyAccessPermission classes.

Các AccessPermissionđược sử dụng để bảo vệ Tài liệu PDF bằng cách gán quyền truy cập cho nó. Sử dụng lớp này, bạn có thể hạn chế người dùng thực hiện các thao tác sau.

  • In tài liệu
  • Sửa đổi nội dung của tài liệu
  • Sao chép hoặc trích xuất nội dung của tài liệu
  • Thêm hoặc sửa đổi chú thích
  • Điền vào các trường biểu mẫu tương tác
  • Trích xuất văn bản và đồ họa để người khiếm thị tiếp cận được
  • Tập hợp tài liệu
  • In chất lượng kém

Các StandardProtectionPolicy lớp được sử dụng để thêm bảo vệ dựa trên mật khẩu vào tài liệu.

Sau đây là các bước để mã hóa một tài liệu PDF hiện có.

Bước 1: Tải tài liệu PDF hiện có

Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp làm tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như được hiển thị bên dưới.

File file = new File("path of the document") 
PDDocument document = PDDocument.load(file);

Bước 2: Tạo đối tượng quyền truy cập

Khởi tạo AccessPermission lớp như hình bên dưới.

AccessPermission accessPermission = new AccessPermission();

Bước 3: Tạo đối tượng StandardProtectionPolicy

Khởi tạo StandardProtectionPolicy lớp bằng cách chuyển mật khẩu chủ sở hữu, mật khẩu người dùng và AccessPermission đối tượng như hình dưới đây.

StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);

Bước 4: Đặt độ dài của khóa mã hóa

Đặt độ dài khóa mã hóa bằng cách sử dụng setEncryptionKeyLength() như hình dưới đây.

spp.setEncryptionKeyLength(128);

Bước 5: Đặt quyền

Đặt quyền bằng cách sử dụng setPermissions()phương thức của lớp StandardProtectionPolicy. Phương thức này chấp nhận mộtAccessPermission đối tượng như một tham số.

spp.setPermissions(accessPermission);

Bước 6: Bảo vệ tài liệu

Bạn có thể bảo vệ tài liệu của mình bằng cách sử dụng protect() phương pháp của PDDocumentlớp như hình bên dưới. Vượt quaStandardProtectionPolicy đối tượng như một tham số cho phương thức này.

document.protect(spp);

Bước 7: Lưu tài liệu

Sau khi thêm nội dung cần thiết, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.

document.save("Path");

Bước 8: Đóng tài liệu

Cuối cùng, đóng tài liệu bằng cách sử dụng close() phương pháp của PDDocument lớp như hình bên dưới.

document.close();

Thí dụ

Giả sử, chúng ta có một tài liệu PDF có tên sample.pdf, trong đường dẫn C:/PdfBox_Examples/ với các trang trống như hình dưới đây.

Ví dụ này trình bày cách mã hóa tài liệu PDF được đề cập ở trên. Tại đây, chúng tôi sẽ tải tài liệu PDF có tênsample.pdfvà mã hóa nó. Lưu mã này trong một tệp có tênEncriptingPDF.java.

import java.io.File;
 
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
  
   public static void main(String args[]) throws Exception {
      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);
   
      //Creating access permission object
      AccessPermission ap = new AccessPermission();         

      //Creating StandardProtectionPolicy object
      StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);

      //Setting the length of the encryption key
      spp.setEncryptionKeyLength(128);

      //Setting the access permissions
      spp.setPermissions(ap);

      //Protecting the document
      document.protect(spp);

      System.out.println("Document encrypted");

      //Saving the document
      document.save("C:/PdfBox_Examples/sample.pdf");
      //Closing the document
      document.close();

   }
}

Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.

javac EncriptingPDF.java
java EncriptingPDF

Khi thực thi, chương trình trên sẽ mã hóa tài liệu PDF đã cho và hiển thị thông báo sau.

Document encrypted

Nếu bạn cố gắng mở tài liệu sample.pdf, bạn không thể, vì nó được mã hóa. Thay vào đó, nó sẽ nhắc nhập mật khẩu để mở tài liệu như hình dưới đây.