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

이번에는 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에서 특정 크기의 이미지를 추출하는 방법에 대해 알아보겠습니다.

PDFBox 라이브러리 추가하기

먼저, Maven을 사용한다면 pom.xml 파일에 다음 의존성을 추가합니다.

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

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

PDF에서 이미지 추출하기

다음은 PDF 파일에서 특정 크기의 이미지를 추출하는 Java 코드입니다.

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

public class PDFImageExtractor {

   public static void extractImageFromPDF(String pdfFilePath, String outputImagePath, int pageNumber, int dpi, int imageWidth, int imageHeight) {
      try {
         PDDocument document = PDDocument.load(new File(pdfFilePath));
         PDFRenderer pdfRenderer = new PDFRenderer(document);
         BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber - 1, dpi);
         BufferedImage resizedImage = resizeImage(image, imageWidth, imageHeight);
         ImageIO.write(resizedImage, "PNG", new File(outputImagePath));
         document.close();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }

   private static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) {
      BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_ARGB);
      Graphics2D graphics = resizedImage.createGraphics();
      graphics.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null);
      graphics.dispose();
      return resizedImage;
   }

   public static void main(String[] args) {
      String pdfFilePath = "path/to/pdf/file.pdf";
      String outputImagePath = "path/to/output/image.png";
      int pageNumber = 1;
      int dpi = 300;
      int imageWidth = 800;
      int imageHeight = 600;

      extractImageFromPDF(pdfFilePath, outputImagePath, pageNumber, dpi, imageWidth, imageHeight);
   }

}

위의 코드는 extractImageFromPDF 메서드를 통해 지정한 PDF 파일의 특정 페이지에서 이미지를 추출하고, 크기를 조정하여 PNG 파일로 저장하는 기능을 구현합니다.

pdfFilePath 변수에 추출할 PDF 파일 경로를, outputImagePath 변수에 이미지를 저장할 경로를 지정합니다. pageNumber 변수는 추출할 페이지 번호를, dpi 변수는 이미지의 해상도를, imageWidthimageHeight 변수는 이미지의 크기를 설정합니다.

결론

Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에서 특정 크기의 이미지를 추출하는 방법에 대해 알아보았습니다. 이를 활용하여 다양한 PDF 작업을 자동화하는데 도움이 될 수 있습니다. 더 자세한 내용은 Apache PDFBox documentation을 참고하세요.