[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();
}
}
}
위의 예제 코드에서는 PDDocument
와 PDPage
를 생성하여 페이지를 만들고, PDPageContentStream
을 사용하여 표를 그리게 됩니다. 코드에서는 표의 시작 위치와 크기, 행과 열의 개수 등을 설정한 후, drawLine
메소드를 사용하여 테두리 선을 그립니다.
실행하면 output.pdf
파일이 생성되고, 그 안에 표가 그려진 것을 확인할 수 있습니다.
이 예제 코드를 기반으로 Apache PDFBox를 사용하여 더 복잡한 표를 그리거나 다른 컨텐츠를 추가해볼 수 있습니다. 자세한 내용은 Apache PDFBox 공식 문서를 참고하시기 바랍니다.