Apache PDFBox는 Java로 개발된 오픈 소스 라이브러리로, PDF 파일을 생성하고 편집하는 데 사용할 수 있습니다. 이 라이브러리를 사용하면 다양한 방식으로 PDF 파일을 다룰 수 있으며, 인쇄, 병합, 분할, 텍스트 추출 등과 같은 작업을 수행할 수 있습니다. 이번 글에서는 Apache PDFBox 라이브러리를 사용하여 PDF 파일을 다루는 간단한 예제를 살펴보겠습니다.
PDF 파일 생성하기
PDF 파일을 생성하기 위해서는 PDDocument
클래스를 사용해야 합니다. 다음은 간단한 예제 코드입니다.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
public class PdfCreator {
public static void main(String[] args) {
try {
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
document.save(new File("example.pdf"));
document.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
위 예제는 빈 화면이 있는 A4 크기의 PDF 파일을 생성하는 예제입니다. 생성한 PDF 파일은 document.save()
를 통해 저장됩니다.
PDF 파일 편집하기
PDF 파일을 편집하기 위해서는 PDDocument
객체를 읽어와서 필요한 작업을 수행합니다. 다음은 PDF 파일에 텍스트를 추가하는 예제 코드입니다.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class PdfEditor {
public static void main(String[] args) {
try {
PDDocument document = PDDocument.load(new File("example.pdf"));
PDPage page = document.getPage(0);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello, PDFBox!");
contentStream.endText();
contentStream.close();
document.save(new File("example-edited.pdf"));
document.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
위 예제는 example.pdf
파일을 읽어와 첫 번째 페이지에 “Hello, PDFBox!”라는 텍스트를 추가한 뒤, example-edited.pdf
파일로 저장하는 예제입니다.
PDF 파일 분할하기
PDF 파일을 여러 개의 페이지로 나누기 위해서는 PDDocument
클래스의 split()
메소드를 사용합니다. 다음은 PDF 파일을 2개의 파일로 분할하는 예제 코드입니다.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class PdfSplitter {
public static void main(String[] args) {
try {
PDDocument document = PDDocument.load(new File("example.pdf"));
PDDocument[] splitDocuments = document.split(2);
for(int i = 0; i < splitDocuments.length; i++) {
splitDocuments[i].save(new File("example-split-" + (i+1) + ".pdf"));
splitDocuments[i].close();
}
document.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
위 예제는 example.pdf
파일을 2개의 파일로 분할하여 각각 example-split-1.pdf
, example-split-2.pdf
로 저장하는 예제입니다.
이와 같이 Apache PDFBox를 사용하면 Java에서 간편하게 PDF 파일을 생성, 편집, 분할할 수 있습니다. 더 많은 기능과 사용법은 Apache PDFBox의 공식 문서를 참조하시기 바랍니다.
참고 자료
- Apache PDFBox 공식 홈페이지: https://pdfbox.apache.org/
- Apache PDFBox GitHub 레포지토리: https://github.com/apache/pdfbox