[java] PDF 파일을 여러 페이지로 분할하기(Java Apache PDFBox 사용)

PDF 파일은 대부분 한 개의 파일에 여러 페이지로 구성되어 있습니다. 때로는 PDF 파일의 각 페이지를 개별적으로 사용해야 할 때가 있습니다. Java에서는 Apache PDFBox 라이브러리를 사용하여 PDF 파일을 여러 페이지로 분할할 수 있습니다. 이 글에서는 Java Apache PDFBox를 사용하여 PDF 파일을 여러 페이지로 분할하는 방법에 대해 알아보겠습니다.

Apache PDFBox 설치하기

Apache PDFBox를 사용하기 위해서는 먼저 해당 라이브러리를 다운로드하여 프로젝트에 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음 종속성(dependency)을 추가합니다.

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

Maven을 사용하지 않는다면 Apache PDFBox 다운로드 페이지에서 해당 라이브러리를 다운로드 받아 프로젝트에 추가합니다.

PDF 파일의 페이지 분할하기

PDF 파일의 페이지를 분할하기 위해서는 다음과 같은 단계를 따를 수 있습니다.

  1. PDF 파일을 로드합니다.
  2. PDDocument 객체를 생성하여 로드한 PDF 파일을 엽니다.
  3. getNumberOfPages() 메서드를 사용하여 PDF의 총 페이지 수를 얻습니다.
  4. 각 페이지를 개별적으로 추출하여 원하는 작업을 수행합니다.
  5. 분할한 페이지를 저장합니다.

다음은 PDF 파일을 여러 페이지로 분할하는 Java 코드의 예입니다.

import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFSplitter;

public class PDFSplitterExample {
    public static void main(String[] args) {
        try {
            // 1. PDF 파일 로드
            File file = new File("example.pdf");

            // 2. PDDocument 객체 생성
            PDDocument document = PDDocument.load(file);

            // 3. PDF 파일의 페이지 수 얻기
            int totalPages = document.getNumberOfPages();

            // 4. 페이지 분할
            PDFSplitter splitter = new PDFSplitter();
            splitter.setStartPage(1);
            splitter.setEndPage(totalPages);
            splitter.setSplitAtPage(totalPages); // 각 페이지를 개별로 추출
            splitter.setSplitAtPageBleedBox(false); // 블리드 박스로 나누지 않음

            // 5. 분할된 페이지 저장
            for (int i = 0; i < splitter.getNumberOfPages(); i++) {
                PDDocument splitDocument = splitter.split(document);
                splitDocument.save("Page_" + (i + 1) + ".pdf");
                splitDocument.close();
            }

            // 6. PDDocument 객체 닫기
            document.close();

            System.out.println("PDF 파일 분할 완료");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서는 PDFSplitter 클래스를 사용하여 페이지를 분할합니다. setStartPage()setEndPage() 메서드를 사용하여 분할할 페이지 범위를 지정할 수 있습니다. setSplitAtPage() 메서드는 각 페이지를 개별로 추출하는 옵션을 설정하는데, true로 설정하면 각 페이지의 내용을 개별 PDF 파일로 추출하고, false로 설정하면 페이지 범위 별로 추출합니다.

분할된 페이지는 PDDocument 객체로 저장할 수 있습니다. 분할된 각 페이지를 저장한 뒤에는 원하는 작업을 수행하거나 필요에 따라 추가적인 처리를 할 수 있습니다.

결론

Java Apache PDFBox를 사용하여 PDF 파일을 여러 페이지로 분할하는 방법에 대해 알아보았습니다. 프로젝트에 Apache PDFBox 라이브러리를 추가한 뒤, 간단한 Java 코드를 사용하여 PDF 파일의 각 페이지를 개별적으로 추출할 수 있습니다. PDF 파일의 페이지를 분할하여 필요한 작업을 수행하거나 다른 용도로 사용할 수 있습니다.

추가적인 자세한 내용은 Apache PDFBox 공식 문서를 참조하시기 바랍니다.