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