PDFBox - การเข้ารหัสเอกสาร PDF

ในบทที่แล้วเราได้เห็นวิธีการแทรกรูปภาพในเอกสาร PDF ในบทนี้เราจะพูดถึงวิธีการเข้ารหัสเอกสาร PDF

การเข้ารหัสเอกสาร PDF

คุณสามารถเข้ารหัสเอกสาร PDF โดยใช้วิธีการที่มีให้โดย StandardProtectionPolicy และ AccessPermission classes.

AccessPermissionคลาสใช้เพื่อป้องกันเอกสาร PDF โดยกำหนดสิทธิ์การเข้าถึง เมื่อใช้คลาสนี้คุณสามารถ จำกัด ผู้ใช้จากการดำเนินการต่อไปนี้

  • พิมพ์เอกสาร
  • แก้ไขเนื้อหาของเอกสาร
  • คัดลอกหรือแยกเนื้อหาของเอกสาร
  • เพิ่มหรือแก้ไขคำอธิบายประกอบ
  • กรอกข้อมูลในช่องฟอร์มโต้ตอบ
  • แยกข้อความและกราฟิกเพื่อการเข้าถึงสำหรับผู้พิการทางสายตา
  • รวบรวมเอกสาร
  • พิมพ์ด้วยคุณภาพที่ลดลง

StandardProtectionPolicy คลาสใช้เพื่อเพิ่มการป้องกันโดยใช้รหัสผ่านให้กับเอกสาร

ต่อไปนี้เป็นขั้นตอนในการเข้ารหัสเอกสาร PDF ที่มีอยู่

ขั้นตอนที่ 1: การโหลดเอกสาร PDF ที่มีอยู่

โหลดเอกสาร PDF ที่มีอยู่โดยใช้วิธีคงที่ load() ของ PDDocumentชั้นเรียน. วิธีนี้ยอมรับออบเจ็กต์ไฟล์เป็นพารามิเตอร์เนื่องจากเป็นวิธีการแบบคงที่คุณสามารถเรียกใช้โดยใช้ชื่อคลาสดังที่แสดงด้านล่าง

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

ขั้นตอนที่ 2: การสร้างวัตถุสิทธิ์การเข้าถึง

เริ่มต้นไฟล์ AccessPermission คลาสดังที่แสดงด้านล่าง

AccessPermission accessPermission = new AccessPermission();

ขั้นตอนที่ 3: การสร้างวัตถุ StandardProtectionPolicy

เริ่มต้นไฟล์ StandardProtectionPolicy คลาสโดยส่งรหัสผ่านเจ้าของรหัสผ่านผู้ใช้และไฟล์ AccessPermission วัตถุดังที่แสดงด้านล่าง

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

ขั้นตอนที่ 4: การตั้งค่าความยาวของคีย์การเข้ารหัส

ตั้งค่าความยาวของคีย์การเข้ารหัสโดยใช้ setEncryptionKeyLength() วิธีการดังแสดงด้านล่าง

spp.setEncryptionKeyLength(128);

ขั้นตอนที่ 5: การตั้งค่าสิทธิ์

ตั้งค่าการอนุญาตโดยใช้ setPermissions()วิธีการของคลาส StandardProtectionPolicy วิธีนี้ยอมรับไฟล์AccessPermission วัตถุเป็นพารามิเตอร์

spp.setPermissions(accessPermission);

ขั้นตอนที่ 6: การปกป้องเอกสาร

คุณสามารถปกป้องเอกสารของคุณโดยใช้ไฟล์ protect() วิธีการของ PDDocumentคลาสดังที่แสดงด้านล่าง ผ่านไฟล์StandardProtectionPolicy วัตถุเป็นพารามิเตอร์ของวิธีนี้

document.protect(spp);

ขั้นตอนที่ 7: บันทึกเอกสาร

หลังจากเพิ่มเนื้อหาที่ต้องการแล้วให้บันทึกเอกสาร PDF โดยใช้ไฟล์ save() วิธีการของ PDDocument คลาสดังที่แสดงในบล็อกโค้ดต่อไปนี้

document.save("Path");

ขั้นตอนที่ 8: การปิดเอกสาร

สุดท้ายปิดเอกสารโดยใช้ close() วิธีการของ PDDocument คลาสดังที่แสดงด้านล่าง

document.close();

ตัวอย่าง

สมมติว่าเรามีเอกสาร PDF ชื่อ sample.pdfในเส้นทาง C:/PdfBox_Examples/ ด้วยหน้าว่างตามที่แสดงด้านล่าง

ตัวอย่างนี้สาธิตวิธีการเข้ารหัสเอกสาร PDF ดังกล่าวข้างต้น ที่นี่เราจะโหลดเอกสาร PDF ชื่อsample.pdfและเข้ารหัส บันทึกรหัสนี้ในไฟล์ที่มีชื่อEncriptingPDF.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();

   }
}

คอมไพล์และเรียกใช้ไฟล์ Java ที่บันทึกไว้จากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้

javac EncriptingPDF.java
java EncriptingPDF

เมื่อดำเนินการโปรแกรมด้านบนจะเข้ารหัสเอกสาร PDF ที่ระบุโดยแสดงข้อความต่อไปนี้

Document encrypted

หากคุณพยายามเปิดเอกสาร sample.pdfคุณไม่สามารถทำได้เนื่องจากมีการเข้ารหัส แต่จะแจ้งให้พิมพ์รหัสผ่านเพื่อเปิดเอกสารดังที่แสดงด้านล่าง