[java] Apache PDFBox로 PDF 파일 분할하기

PDF 파일을 분할하는 것은 종종 문서 작업에서 필요한 작업입니다. 이번 블로그 포스트에서는 Apache PDFBox 라이브러리를 사용하여 Java에서 PDF 파일을 분할하는 방법에 대해 알아보겠습니다.

Apache PDFBox는 Java로 작성된 오픈 소스 PDF 라이브러리로, 다양한 PDF 관련 작업을 수행할 수 있습니다. PDF 파일을 읽고 쓰기, 텍스트 추출, 이미지 추출, 분할 등의 작업을 할 수 있습니다.

Apache PDFBox 의존성 추가하기

PDF 파일을 분할하기 위해 먼저 Apache PDFBox 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음 의존성을 추가합니다.

<dependencies>
    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.26</version>
    </dependency>
</dependencies>

Gradle을 사용하는 경우 build.gradle 파일에 다음 의존성을 추가합니다.

dependencies {
    implementation 'org.apache.pdfbox:pdfbox:2.0.26'
}

의존성이 추가되었다면 Apache PDFBox를 사용하여 PDF 파일을 분할해보겠습니다.

PDF 파일 분할하기

import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;

public class PDFSplitter {

    public static void main(String[] args) {
        try {
            // 분할할 PDF 파일 경로
            File file = new File("input.pdf");

            // PDF 문서 로드
            PDDocument document = PDDocument.load(file);

            // PDF 분할을 위한 Splitter 생성
            Splitter splitter = new Splitter();

            // 분할된 PDF 문서들을 저장할 경로
            String outputPath = "output";
            File outputDirectory = new File(outputPath);

            // 분할된 PDF 문서들을 저장할 디렉터리 생성
            if (!outputDirectory.exists()) {
                outputDirectory.mkdirs();
            }

            // PDF 문서를 페이지 단위로 분할하여 저장
            int pageCounter = 1;
            for (PDDocument singlePage : splitter.split(document)) {
                String outputFileName = String.format("output_%03d.pdf", pageCounter++);
                File outputFile = new File(outputDirectory, outputFileName);
                singlePage.save(outputFile);
            }

            // 사용한 리소스 해제
            document.close();

            System.out.println("PDF 파일 분할이 완료되었습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드는 input.pdf 파일을 페이지 단위로 분할하여 output 폴더에 저장하는 예시입니다. Splitter 클래스를 사용하여 PDF 문서를 분할하고, 분할된 각 페이지를 PDDocument로 저장하고 있습니다. 각 페이지는 output_001.pdf, output_002.pdf와 같은 이름으로 저장됩니다.

코드 실행 후 output 폴더에 분할된 PDF 파일들이 생성됩니다.

결론

Apache PDFBox 라이브러리를 사용하면 Java에서 PDF 파일을 손쉽게 분할할 수 있습니다. 이를 통해 필요한 작업을 수행하거나, PDF 문서의 일부를 추출하는 등 다양한 작업을 할 수 있습니다. Apache PDFBox의 다른 기능들도 활용하여 더 많은 작업을 수행할 수 있으니 참고하세요.


참고 링크: