[java] Apache PDFBox로 PDF 파일에 도형 및 그룹 추가하기

Apache PDFBox는 자바로 작성된 오픈 소스 라이브러리로, PDF 파일을 생성하고 편집할 수 있는 강력한 기능을 제공합니다. 이 블로그 포스트에서는 PDFBox를 사용하여 PDF 파일에 도형과 그룹을 추가하는 방법에 대해 알아보겠습니다.

1. PDFBox 라이브러리 추가

먼저, 프로젝트에 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'
}

의존성을 추가한 후, 프로젝트를 빌드하고 Apache PDFBox를 사용할 수 있게 됩니다.

2. PDF 파일 생성

먼저, PDF 파일을 생성해야 합니다. 아래의 코드는 빈 PDF 문서를 생성하는 예제입니다.

import org.apache.pdfbox.pdmodel.PDDocument;

public class CreatePDF {
    public static void main(String[] args) {
        try {
            PDDocument document = new PDDocument();
            document.save("output.pdf");
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

이 코드를 실행하면, 현재 디렉토리에 output.pdf 파일이 생성됩니다.

3. 도형 그리기

PDF 파일에 도형을 추가하려면, PDPageContentStream 클래스를 사용해야 합니다. 아래의 예제는 PDF 파일에 사각형을 그리는 예제입니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;

public class AddShapesToPDF {
    public static void main(String[] args) {
        try {
            // PDF 문서 생성
            PDDocument document = new PDDocument();
            PDPage page = new PDPage(PDRectangle.A4);
            document.addPage(page);
            
            // 페이지 콘텐츠 스트림 생성
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            
            // 사각형 그리기
            contentStream.addRect(100, 100, 200, 100);
            contentStream.setLineWidth(1f);
            contentStream.stroke();
            
            // 페이지 콘텐츠 스트림 닫기
            contentStream.close();
            
            // PDF 파일 저장
            document.save("output.pdf");
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위의 코드를 실행하면, output.pdf 파일에 사각형이 그려진 PDF 문서가 생성됩니다.

4. 그룹 추가

PDF 파일에 여러 도형을 그룹으로 묶어 관리할 수도 있습니다. 아래의 예제는 PDF 파일에 그룹을 추가하는 방법을 보여줍니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.PDExtendedGraphicsState;

public class AddGroupToPDF {
    public static void main(String[] args) {
        try {
            // PDF 문서 생성
            PDDocument document = new PDDocument();
            PDPage page = new PDPage(PDRectangle.A4);
            document.addPage(page);
            
            // 페이지 콘텐츠 스트림 생성
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            
            // 그룹 시작
            contentStream.saveGraphicsState();
            
            // 그룹에 속하는 도형 그리기
            contentStream.moveTo(100, 100);
            contentStream.lineTo(300, 100);
            contentStream.lineTo(300, 200);
            contentStream.lineTo(100, 200);
            contentStream.closePath();
            contentStream.setLineWidth(1f);
            contentStream.stroke();
            
            // 그룹 종료
            contentStream.restoreGraphicsState();
            
            // 페이지 콘텐츠 스트림 닫기
            contentStream.close();
            
            // PDF 파일 저장
            document.save("output.pdf");
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위의 코드를 실행하면, output.pdf 파일에 그룹이 형성된 PDF 문서가 생성됩니다.

결론

이번 블로그 포스트에서는 Apache PDFBox를 사용하여 PDF 파일에 도형과 그룹을 추가하는 방법을 알아보았습니다. PDFBox는 강력하고 유연한 기능을 제공하기 때문에, 다양한 형태의 PDF 파일을 생성하고 편집할 수 있습니다. 여러분도 PDF를 다루는 프로젝트를 진행할 때 PDFBox를 활용해 보세요.