[java] Apache PDFBox를 이용한 PDF 파일 암호화

Apache PDFBox는 Java로 PDF 파일을 다룰 수 있는 라이브러리로, 이를 이용해 PDF 파일을 생성, 수정, 읽기, 검증 등이 가능합니다. 이번에는 Apache PDFBox를 사용하여 PDF 파일을 암호화하는 방법에 대해 알아보겠습니다.

Apache PDFBox 설치

Apache PDFBox를 사용하기 위해서는 먼저 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 아래 의존성을 추가할 수 있습니다.

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

Gradle을 사용한다면 아래와 같이 의존성을 추가할 수 있습니다.

implementation 'org.apache.pdfbox:pdfbox:2.0.24'

의존성을 추가한 후에는 프로젝트를 업데이트하여 라이브러리를 다운로드하고 사용할 수 있습니다.

PDF 파일 암호화

Apache PDFBox를 이용하여 PDF 파일을 암호화하려면 PDDocument 객체를 생성하고 PDDocumentprotect() 메서드를 사용하여 암호화 처리를 해야 합니다. 아래는 간단한 예제 코드입니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;

import java.io.File;
import java.io.IOException;

public class PdfEncryptionExample {
    public static void main(String[] args) {
        try {
            PDDocument document = PDDocument.load(new File("example.pdf"));
 
            AccessPermission ap = new AccessPermission();
            StandardProtectionPolicy spp = new StandardProtectionPolicy("userpassword", "ownerpassword", ap);
 
            spp.setEncryptionKeyLength(128);
            spp.setPermissions(ap);
 
            PDDocumentCatalog pdDocumentCatalog = document.getDocumentCatalog();
            pdDocumentCatalog.setEncryptionDictionary(spp);
            document.protect(spp);
 
            document.save("example-encrypted.pdf");
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드는 example.pdf 파일을 불러와서 userpasswordownerpassword로 암호화한 다음 example-encrypted.pdf로 저장하는 예제입니다.

이렇게 하면 Apache PDFBox를 사용하여 PDF 파일을 간단히 암호화할 수 있습니다.

참고 자료