[java] Apache PDFBox와 함께 PDF 파일 다루기

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의 공식 문서를 참조하시기 바랍니다.

참고 자료