[java] iText 라이브러리와 워터마크 처리

iText는 Java 및 .NET용으로 만들어진 PDF문서를 생성하고 조작하는 라이브러리입니다. 이 라이브러리를 사용하여 PDF에 워터마크를 추가하는 것은 간단하지만 효과적인 방법입니다.

iText 라이브러리 추가하기

먼저 Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 프로젝트에 iText 라이브러리를 추가해야 합니다. 아래는 Maven을 사용하는 경우의 예시입니다.

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7</artifactId>
    <version>7.1.15</version>
</dependency>

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

implementation 'com.itextpdf:itext7:7.1.15'

의존성을 추가한 후 프로젝트를 다시 빌드하면 iText 라이브러리를 사용할 수 있게 됩니다.

PDF에 워터마크 추가하기

다음은 iText 라이브러리를 사용하여 PDF에 텍스트 워터마크를 추가하는 간단한 예제 코드입니다.

import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Text;

import java.io.File;

public class PdfWatermark {

    public static void main(String[] args) throws Exception {
        File inputFile = new File("input.pdf");
        File outputFile = new File("output.pdf");

        PdfReader pdfReader = new PdfReader(inputFile);
        PdfWriter pdfWriter = new PdfWriter(outputFile);
        PdfDocument pdf = new PdfDocument(pdfReader, pdfWriter);
        Document document = new Document(pdf);

        PdfFont font = PdfFontFactory.createFont();
        Text watermarkText = new Text("Confidential").setFont(font).setFontSize(50);
        Paragraph watermark = new Paragraph(watermarkText);
        watermark.setFixedPosition(100, 400, 300);

        for (int i = 1; i <= pdf.getNumberOfPages(); i++) {
            document.showTextAligned(watermark, 297.5f, 421, i, Text.Alignment.CENTER, VerticalAlignment.MIDDLE, (float) Math.toDegrees(Math.atan(421 / 297.5)));
        }

        document.close();
        pdf.close();
    }
}

위 코드에서는 ‘input.pdf’ 파일로부터 PDF를 읽어들여 ‘output.pdf’ 파일에 텍스트 “Confidential”을 워터마크로 추가하는 예제입니다.

마치며

iText 라이브러리를 사용하면 PDF에 간단하게 워터마크를 추가할 수 있습니다. 이를 통해 문서의 보안 및 공지사항 표시 등 다양한 용도로 활용할 수 있습니다.

참고자료: