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 StandardProtectionPolicy và AccessPermission 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.