PDFBox-PDF 문서 암호화

이전 장에서 PDF 문서에 이미지를 삽입하는 방법을 살펴 보았습니다. 이 장에서는 PDF 문서를 암호화하는 방법에 대해 설명합니다.

PDF 문서 암호화

에서 제공하는 방법을 사용하여 PDF 문서를 암호화 할 수 있습니다. StandardProtectionPolicyAccessPermission 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, 암호화되어 있으므로 할 수 없습니다. 대신 아래와 같이 문서를 열려면 암호를 입력하라는 메시지가 표시됩니다.