[java] 워터마크 추가하기(Java Apache PDFBox 사용)

PDF 문서에 워터마크를 추가하는 것은 중요한 작업 중 하나입니다. 워터마크를 통해 문서의 소유권을 표시하거나 중요한 정보를 강조할 수 있습니다. 이번 블로그 포스트에서는 Java Apache PDFBox 라이브러리를 사용하여 PDF 문서에 워터마크를 추가하는 방법을 알아보겠습니다.

1. Apache PDFBox 라이브러리 설정

우선 Apache PDFBox 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 해당 라이브러리를 pom.xml 파일에 추가합니다.

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

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

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

2. 워터마크 추가하기

PDF 문서에 워터마크를 추가하기 위해 다음과 같이 코드를 작성합니다.

import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

public class PDFWatermarkExample {

    public static void main(String[] args) {
        try {
            // 원본 PDF 파일 경로
            File inputFile = new File("input.pdf");
            
            // 출력 PDF 파일 경로
            File outputFile = new File("output.pdf");
            
            // PDDocument 객체 생성
            PDDocument document = PDDocument.load(inputFile);
            
            // 모든 페이지에 워터마크 추가
            for (PDPage page : document.getPages()) {
                PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true);
                
                contentStream.setFont(PDType1Font.TIMES_ITALIC, 48);
                contentStream.setLeading(48 * 1.2f);
                contentStream.beginText();
                
                contentStream.newLineAtOffset(100, 100);
                contentStream.showText("Watermark");
                
                contentStream.endText();
                contentStream.close();
            }
            
            // 출력 파일로 저장
            document.save(outputFile);
            
            // 메모리 해제
            document.close();
            
            System.out.println("워터마크가 추가된 PDF 파일이 생성되었습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 input.pdf라는 원본 PDF 파일을 PDDocument 객체로 로드한 후, 각 페이지마다 PDPageContentStream을 사용하여 워터마크를 추가합니다. 워터마크는 “Watermark”라는 텍스트로 표시되며, Times Italic 폰트와 크기 48으로 설정되어 있습니다.

마지막으로, 워터마크가 추가된 문서를 output.pdf로 저장하고 PDDocument를 닫습니다.

3. 실행 결과

실행 결과, 워터마크가 추가된 output.pdf 파일이 생성됩니다. 이 파일을 열어보면 모든 페이지에 “Watermark”라는 텍스트가 추가되어 있습니다.

4. 결론

Java Apache PDFBox를 사용하여 PDF 문서에 워터마크를 추가하는 방법을 알아보았습니다. 이를 통해 중요한 문서를 강조하거나 소유권을 표시할 수 있습니다.

더 많은 정보를 알고 싶다면 Apache PDFBox 공식 문서를 참조하세요.