[java] Apache PDFBox로 PDF 파일을 이미지로 변환하기

Adobe Acrobat Reader를 사용하여 PDF 파일을 열어야 하는 경우가 있습니다. PDF 파일 내용을 다른 용도로 사용하기 위해 이미지로 변환해야 할 때도 있습니다. 이를 위해 Apache PDFBox 라이브러리를 사용하여 PDF 파일을 이미지로 변환하는 방법을 알아보겠습니다.

Apache PDFBox란?

Apache PDFBox는 Java로 작성된 오픈 소스 라이브러리로, PDF 파일을 생성, 조작 및 추출할 수 있는 기능을 제공합니다. Apache PDFBox는 Apache License 2.0으로 배포되기 때문에 상업적 및 비상업적 용도로 자유롭게 사용할 수 있습니다.

PDF 파일을 이미지로 변환하기 위한 Apache PDFBox 설정

Apache PDFBox를 사용하기 위해 프로젝트에 라이브러리를 추가해야 합니다. Maven 프로젝트의 경우, pom.xml 파일에 다음 종속성을 추가합니다.

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

Gradle 프로젝트의 경우, build.gradle 파일에 다음 의존성을 추가합니다.

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

PDF 파일을 이미지로 변환하는 Java 코드

이제 Apache PDFBox를 사용하여 PDF 파일을 이미지로 변환할 수 있는 Java 코드를 작성해보겠습니다. 다음은 예시 코드입니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class PdfToImageConverter {
    public static void convertToImages(String pdfFilePath, String outputFolder) {
        try {
            // PDF 파일을 PDDocument로 열기
            PDDocument document = PDDocument.load(new File(pdfFilePath));
            
            // PDF 파일을 이미지로 변환하기 위한 PDFRenderer 생성
            PDFRenderer renderer = new PDFRenderer(document);

            // PDF 페이지 수 만큼 반복하여 이미지로 변환
            for (int pageNumber = 0; pageNumber < document.getNumberOfPages(); pageNumber++) {
                // PDF 페이지를 BufferedImage로 렌더링
                BufferedImage image = renderer.renderImageWithDPI(pageNumber, 300);

                // 이미지를 파일로 저장
                String imageFileName = pageNumber + ".png";
                ImageIO.write(image, "PNG", new File(outputFolder, imageFileName));
            }

            // PDDocument 닫기
            document.close();

            System.out.println("PDF 파일을 이미지로 변환 완료");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String pdfFilePath = "input.pdf";
        String outputFolder = "output";

        convertToImages(pdfFilePath, outputFolder);
    }
}

위의 코드는 PdfToImageConverter 클래스를 정의하고, convertToImages 메소드를 사용하여 PDF 파일을 이미지로 변환합니다. 변환할 PDF 파일의 경로와 이미지 파일을 저장할 폴더 경로를 인수로 전달합니다. main 메소드에서는 예시로 input.pdf를 변환하여 output 폴더에 저장하도록 설정되어 있습니다.

실행 결과

위 코드를 실행하면, 지정한 폴더에 각 PDF 페이지에 해당하는 이미지 파일이 생성됩니다. 각 이미지 파일은 페이지 번호로 된 이름을 가지고 있습니다.

Apache PDFBox 라이브러리를 사용하여 PDF 파일을 이미지로 변환하는 방법을 알아보았습니다. 이를 통해 원하는 용도에 맞게 PDF 파일을 이미지로 변환할 수 있습니다.

참고 자료