[java] Apache PDFBox로 PDF 보안 설정하기

Apache PDFBox는 자바로 작성된 오픈소스 라이브러리로, PDF 파일을 생성, 수정 및 조작할 수 있는 기능을 제공합니다. 이번 글에서는 PDFBox를 사용하여 PDF 문서에 보안 설정을 추가하는 방법에 대해 알아보겠습니다.

1. 의존성 추가하기

먼저, Maven이나 Gradle과 같은 빌드 도구를 사용하여 Apache PDFBox를 프로젝트에 추가해야 합니다. Maven의 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다:

<dependencies>
    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.25</version>
    </dependency>
</dependencies>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다:

dependencies {
    implementation 'org.apache.pdfbox:pdfbox:2.0.25'
}

의존성을 추가한 후, 빌드 도구를 사용하여 의존성을 업데이트합니다.

2. 보안 설정 추가하기

PDFBox를 사용하여 PDF에 보안 설정을 추가하는 방법은 다양합니다. 아래의 코드는 간단한 예제로, PDF 파일의 암호를 설정하는 방법을 보여줍니다.

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

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

public class PDFSecurityExample {
    public static void main(String[] args) {
        try {
            // PDF 파일 로드
            File file = new File("path/to/input.pdf");
            PDDocument document = PDDocument.load(file);

            // 암호 설정
            AccessPermission accessPermission = new AccessPermission();
            accessPermission.setCanPrint(false); // 인쇄 권한 비활성화

            Encryption encryption = new Encryption();
            encryption.setStandardEncryption("password", "", accessPermission); // 암호화 설정

            StandardProtectionPolicy policy = new StandardProtectionPolicy();
            policy.setEncryption(encryption);

            document.protect(policy);

            // 암호화된 파일 저장
            File outputFile = new File("path/to/output.pdf");
            document.save(outputFile);

            // 메모리 해제
            document.close();

            System.out.println("PDF 보안 설정 완료!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드는 입력으로 주어지는 PDF 파일을 로드한 후, 암호 설정을 추가하고 암호화된 PDF를 저장하는 방법을 보여줍니다. accessPermission 객체를 통해 인쇄 권한을 비활성화하고, encryption 객체를 통해 암호화 알고리즘과 암호를 설정합니다. 마지막으로, StandardProtectionPolicy를 사용하여 암호화 설정을 적용하고, document.protect() 메서드를 호출하여 PDF를 보호합니다.

결론

Apache PDFBox를 사용하면 자바로 PDF 파일을 조작하고 다양한 보안 설정을 추가할 수 있습니다. 이 글에서는 간단한 예제를 통해 PDF에 암호를 설정하는 방법을 안내했습니다. 더 많은 기능과 사용법에 대해서는 PDFBox 공식 문서를 참조하시기 바랍니다.