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

PDF 파일은 다양한 형식의 문서를 효과적으로 표시하고 공유할 수 있는 표준 형식입니다. 때로는 이미지 파일을 PDF로 변환해야 할 필요가 있습니다. 이때 Apache PDFBox 라이브러리를 사용하면 간단한 프로그래밍으로 이미지를 PDF 파일로 변환할 수 있습니다. 이번 글에서는 Apache PDFBox를 사용하여 Java에서 이미지를 PDF로 변환하는 방법을 알아보겠습니다.

Apache PDFBox 라이브러리 설정

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

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

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

implementation 'org.apache.pdfbox:pdfbox:2.0.26'

라이브러리를 추가한 후에는 import 문으로 Apache PDFBox 클래스들을 가져올 수 있습니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

이미지를 PDF로 변환하는 예제

이제 Apache PDFBox를 사용하여 이미지 파일을 PDF로 변환해보겠습니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

import java.io.File;
import java.io.IOException;

public class ImageToPdfConverter {

    public void convertImageToPdf(String imagePath, String outputPdfPath) {
        try {
            PDDocument document = new PDDocument();
    
            // 이미지를 PDF 페이지로 추가
            PDPage page = new PDPage();
            document.addPage(page);
    
            PDImageXObject image = PDImageXObject.createFromFile(imagePath, document);
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            contentStream.drawImage(image, 0, 0);
            contentStream.close();
    
            // PDF 파일 저장
            document.save(outputPdfPath);
            document.close();
    
            System.out.println("이미지를 PDF로 변환 완료.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        ImageToPdfConverter converter = new ImageToPdfConverter();
        String imagePath = "image.jpg"; // 변환할 이미지 파일 경로
        String outputPdfPath = "output.pdf"; // 출력할 PDF 파일 경로
        converter.convertImageToPdf(imagePath, outputPdfPath);
    }
}

위의 예제 코드는 주어진 이미지 파일을 PDF 페이지의 배경에 추가한 후, PDF 파일로 저장하는 기능을 구현한 것입니다. convertImageToPdf 메서드를 호출할 때 이미지 파일의 경로와 출력할 PDF 파일의 경로를 전달하면 됩니다.

위의 예제 코드를 실행하면 이미지 파일이 PDF 파일로 변환되어 지정된 경로에 저장됩니다. 해당 경로에 PDF 파일이 정상적으로 생성되었다면 이미지를 PDF로 변환하는 과정이 성공한 것입니다.

결론

이번 글에서는 Apache PDFBox를 사용하여 Java에서 이미지를 PDF 파일로 변환하는 방법을 알아보았습니다. Apache PDFBox 라이브러리를 사용하면 프로그래밍으로 간단하게 이미지를 PDF로 변환할 수 있으며, 이러한 기능을 활용하여 다양한 문서를 효과적으로 관리할 수 있는 장점이 있습니다.