[java] Apache PDFBox로 PDF 파일에 표 그리기

Apache PDFBox는 Java로 작성된 오픈 소스 라이브러리로, PDF 파일을 생성하고 편집하는 데 사용됩니다. 이번 포스트에서는 Apache PDFBox를 사용하여 PDF 파일에 표를 그리는 방법을 살펴보겠습니다.

먼저, Maven을 사용하여 Apache PDFBox를 프로젝트에 추가합니다. pom.xml 파일에 다음 의존성을 추가해주세요:

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

이제 PDFBox를 사용하여 표를 그리는 예제 코드를 작성해보겠습니다. 아래는 간단한 예제 코드입니다:

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

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

public class TableExample {

    public static void main(String[] args) {
        try {
            PDDocument document = new PDDocument();
            PDPage page = new PDPage(PDRectangle.A4);
            document.addPage(page);

            PDPageContentStream contentStream = new PDPageContentStream(document, page);

            // 표 시작 위치와 크기 설정
            float startX = 50;
            float startY = page.getMediaBox().getHeight() - 50;
            float tableWidth = page.getMediaBox().getWidth() - 100;
            float tableHeight = 100;
            float cellMargin = 10;

            // 표 행과 열의 개수 설정
            int rows = 4;
            int cols = 3;

            // 셀 크기 계산
            float rowHeight = tableHeight / (float)rows;
            float tableRowHeight = tableHeight + (cellMargin * 2);

            // 표 그리기
            float nexty = startY;
            for (int i = 0; i <= rows; i++) {
                contentStream.drawLine(startX, nexty, startX + tableWidth, nexty);
                nexty -= rowHeight;
            }
            float nextx = startX;
            for (int i = 0; i <= cols; i++) {
                contentStream.drawLine(nextx, startY, nextx, startY - tableHeight);
                nextx += tableWidth / (float)cols;
            }

            contentStream.close();
            document.save(new File("output.pdf"));
            document.close();

            System.out.println("PDF 파일이 생성되었습니다.");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서는 PDDocumentPDPage를 생성하여 페이지를 만들고, PDPageContentStream을 사용하여 표를 그리게 됩니다. 코드에서는 표의 시작 위치와 크기, 행과 열의 개수 등을 설정한 후, drawLine 메소드를 사용하여 테두리 선을 그립니다.

실행하면 output.pdf 파일이 생성되고, 그 안에 표가 그려진 것을 확인할 수 있습니다.

이 예제 코드를 기반으로 Apache PDFBox를 사용하여 더 복잡한 표를 그리거나 다른 컨텐츠를 추가해볼 수 있습니다. 자세한 내용은 Apache PDFBox 공식 문서를 참고하시기 바랍니다.