[java] PDF 파일에 테이블 추가하기(Java Apache PDFBox 사용)

PDF 파일에 테이블을 추가하는 것은 많은 프로젝트에서 필요한 작업입니다. 이번 포스트에서는 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에 테이블을 추가하는 방법을 알아보겠습니다.

1. PDFBox 라이브러리 추가하기

먼저, 프로젝트에 PDFBox 라이브러리를 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 아래의 의존성을 추가합니다:

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

2. PDF 파일 생성하기

PDF 파일을 생성하기 위해 PDDocument 클래스의 인스턴스를 만들어야 합니다. 아래의 코드를 참고하세요:

PDDocument document = new PDDocument();

3. 페이지 생성 및 테이블 추가하기

PDF 파일에 페이지를 생성하고 테이블을 추가해야 합니다. 아래의 코드를 사용하여 페이지를 생성하고 테이블을 추가하세요:

PDPage page = new PDPage();
document.addPage(page);

float margin = 50;
float yStart = page.getMediaBox().getHeight() - margin;
float yPosition = yStart;
float tableWidth = page.getMediaBox().getWidth() - 2 * margin;
float yEnd = 100;
float tableHeight = yStart - yEnd;

int numberOfColumns = 3;
float[] columnWidths = { tableWidth * 0.4f, tableWidth * 0.3f, tableWidth * 0.3f };

PDFont font = PDType1Font.HELVETICA_BOLD;

int fontSize = 12;
float cellMargin = 2;

PDFTable table = new PDFTable();
table.setNumberOfRows(10);
table.setNumberOfColumns(numberOfColumns);
table.setTableWidth(tableWidth);
table.setTableHeight(tableHeight);
table.setCellMargin(cellMargin);
table.setFontSize(fontSize);
table.setRowsHeight(fontSize + cellMargin * 2);
table.setFont(font);
table.setColumnWidth(columnWidths);

table.addTableToPage(document, page, yStart);

위의 코드에서는 PDFTable 클래스를 사용하여 테이블을 생성하고 설정을 지정합니다. setNumberOfRows()setNumberOfColumns() 메서드를 사용하여 테이블의 크기를 설정하고, setTableWidth()setTableHeight() 메서드를 사용하여 테이블의 너비와 높이를 설정합니다.

마지막으로, addTableToPage() 메서드를 사용하여 테이블을 페이지에 추가합니다.

4. PDF 파일 저장하기

테이블을 추가한 후, 생성한 PDDocument 인스턴스를 사용하여 PDF 파일을 저장해야 합니다. 아래의 코드를 사용하세요:

document.save("output.pdf");
document.close();

위의 코드에서 save() 메서드를 사용하여 파일 이름을 지정하여 PDF 파일을 저장하고 close() 메서드를 사용하여 PDDocument 객체를 닫습니다.

결론

이번 포스트에서는 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에 테이블을 추가하는 방법을 알아보았습니다. PDFBox를 사용하면 쉽고 간편하게 테이블을 추가할 수 있으며, 다양한 스타일과 설정을 적용할 수 있습니다.

더 많은 정보는 PDFBox 공식 문서를 참조하세요.