[java] PDF 파일에서 특정 이미지 크롭하기(Java Apache PDFBox 사용)

PDF 파일에서 특정 이미지를 크롭하는 작업은 종종 필요합니다. 이번에는 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에서 이미지를 추출하고 크롭하는 방법을 알아보겠습니다.

1. PDFBox 라이브러리 추가

PDFBox는 Apache에서 제공하는 Java 라이브러리이며, Maven을 사용하여 쉽게 추가할 수 있습니다. 프로젝트의 pom.xml 파일에 다음 의존성을 추가하세요.

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

2. PDF에서 이미지 추출하기

PDF 파일에서 이미지를 추출하기 위해 PDFBox를 사용합니다. 다음은 PDF에서 모든 이미지를 추출하는 예제 코드입니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

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

            PDFRenderer pdfRenderer = new PDFRenderer(document);

            for (int page = 0; page < document.getNumberOfPages(); ++page) {
                BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300);

                ImageIO.write(bim, "PNG", new File("output" + page + ".png"));
            }

            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 input.pdf는 크롭할 이미지가 있는 PDF 파일의 경로입니다. 각각의 페이지 마다 BufferedImage를 생성하고 ImageIO.write 메소드를 사용하여 이미지를 파일로 저장합니다.

3. 이미지 크롭하기

추출한 이미지 중 원하는 이미지를 크롭하기 위해javax.imageio.ImageIO 클래스를 사용합니다. 다음은 이미지를 크롭하는 예제 코드입니다.

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

public class ImageCropper {
    public static void main(String[] args) {
        try {
            BufferedImage originalImage = ImageIO.read(new File("input.png"));

            int startX = 100;
            int startY = 100;
            int width = 200;
            int height = 200;

            BufferedImage croppedImage = originalImage.getSubimage(startX, startY, width, height);

            ImageIO.write(croppedImage, "PNG", new File("output.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 input.png는 크롭할 이미지가 있는 파일의 경로입니다. startX, startY, width, height를 조정하여 원하는 부분을 크롭할 수 있습니다. 크롭한 이미지를 output.png로 저장합니다.

결론

이번 포스트에서는 Java Apache PDFBox를 사용하여 PDF 파일에서 특정 이미지를 추출하고 크롭하는 방법을 알아보았습니다. PDFBox를 사용하면 다양한 작업을 수행할 수 있으며, 다른 이미지 처리 작업에도 유용하게 사용할 수 있습니다.

참고 문서: