[java] PDF 파일에서 이미지 해상도 조정하기(Java Apache PDFBox 사용)

PDF 파일에서 이미지를 추출하여 해상도를 조정하는 작업은 많은 애플리케이션에서 필요로 하는 기능입니다. Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에서 이미지를 추출하고, 추출한 이미지의 해상도를 조정하는 방법에 대해 알아보겠습니다.

개요

Java Apache PDFBox는 Java로 PDF 파일을 생성, 조작, 분석하기 위한 라이브러리입니다. 이 라이브러리를 사용하면 PDF 파일에 포함된 이미지를 추출하고, 다양한 이미지 처리 작업을 수행할 수 있습니다.

이번 예제에서는 PDF 파일에서 이미지를 추출하고, 추출한 이미지의 해상도를 조정하는 작업을 수행합니다.

준비물

코드 예제

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

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

public class PDFImageResizer {
    public static void main(String[] args) {
        try {
            PDDocument document = PDDocument.load(new File("input.pdf"));
            PDFRenderer renderer = new PDFRenderer(document);

            for (int i = 0; i < document.getNumberOfPages(); i++) {
                PDPage page = document.getPage(i);
                PDResources resources = page.getResources();
                for (COSName name : resources.getXObjectNames()) {
                    PDXObject object = resources.getXObject(name);
                    if (object instanceof PDImageXObject) {
                        PDImageXObject image = (PDImageXObject) object;
                        
                        // 이미지 해상도 조정 작업
                        BufferedImage resizedImage = new BufferedImage(600, 800, BufferedImage.TYPE_INT_RGB);
                        resizedImage.createGraphics().drawImage(image.getImage(), 0, 0, 600, 800, null);
                        
                        File outputFile = new File("output_" + i + ".jpg");
                        ImageIO.write(resizedImage, "jpg", outputFile);
                    }
                }
            }
            
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 input.pdf 파일에서 이미지를 추출하여 해상도를 조정하고, 조정된 이미지를 output_0.jpg, output_1.jpg 등으로 저장하는 예제입니다. PDImageXObject 클래스의 getImage() 메서드를 사용하여 원본 이미지를 가져온 뒤, BufferedImage 클래스를 사용하여 원하는 해상도로 조정 후 파일로 저장합니다.

실행

위의 코드를 별도의 Java 프로젝트에 복사하여 실행해보세요. 실행 전에 Java JDK와 Apache PDFBox 라이브러리를 올바르게 설정해야 합니다. 코드를 실행하면 input.pdf에서 추출된 이미지가 조정된 해상도로 저장됩니다.

결론

Java Apache PDFBox를 사용하여 PDF 파일에서 이미지를 추출하고, 추출한 이미지의 해상도를 조정하는 방법에 대해 알아보았습니다. 이 예제를 기반으로 필요한 작업을 수행하여 PDF 파일에 포함된 이미지를 다룰 수 있습니다.

참고 자료