[java] PDF 파일 전환 및 변환하기(Java Apache PDFBox 사용)

PDF 파일은 일상적으로 사용되는 문서 형식 중 하나입니다. 때때로 PDF 파일의 내용을 다른 형식으로 전환하거나 변환해야 할 필요가 있을 수 있습니다. Java에서는 Apache PDFBox라는 라이브러리를 사용하여 PDF 파일을 다룰 수 있습니다.

Apache PDFBox란?

Apache PDFBox는 Java로 작성된 오픈 소스 라이브러리로, PDF 파일을 생성, 수정, 조작 및 변환할 수 있는 기능을 제공합니다. 다양한 기능을 포함하여 텍스트 추출, 이미지 추출, 문서 합치기, 분할, 보안 설정 등의 작업을 수행할 수 있습니다.

PDF 파일 읽기

PDF 파일을 읽어와서 특정 작업을 수행하기 위해서는 먼저 PDF 파일을 로드해야 합니다. 다음은 PDF 파일을 읽어와서 텍스트를 추출하는 예제 코드입니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

public class PDFReader {
    public static void main(String[] args) {
        try {
            // PDF 파일 로드
            PDDocument document = PDDocument.load(new File("example.pdf"));

            // PDF 파일의 텍스트 추출
            PDFTextStripper stripper = new PDFTextStripper();
            String text = stripper.getText(document);

            // 추출된 텍스트 출력
            System.out.println(text);

            // PDF 파일 닫기
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 “example.pdf” 파일을 로드하고, PDF 파일의 텍스트를 추출하여 출력하는 간단한 예제입니다.

PDF 파일 생성

Apache PDFBox를 사용하여 새로운 PDF 파일을 생성할 수도 있습니다. 다음은 Java에서 PDF 파일을 생성하는 예제 코드입니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;

public class PDFCreator {
    public static void main(String[] args) {
        try {
            // 새로운 PDF 문서 생성
            PDDocument document = new PDDocument();

            // 새로운 페이지 생성
            PDPage page = new PDPage();
            document.addPage(page);

            // 페이지 컨텐츠 스트림 생성
            PDPageContentStream contentStream = new PDPageContentStream(document, page);

            // 페이지에 텍스트 추가
            contentStream.beginText();
            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
            contentStream.newLineAtOffset(100, 700);
            contentStream.showText("Hello, World!");
            contentStream.endText();

            // 페이지 컨텐츠 스트림 닫기
            contentStream.close();

            // PDF 파일 저장
            document.save("newDocument.pdf");

            // PDF 파일 닫기
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 새로운 PDF 문서를 생성하고, 페이지를 추가하고, 페이지에 텍스트를 추가하는 예제입니다. 생성된 PDF 문서는 “newDocument.pdf” 파일로 저장됩니다.

PDF 변환

PDF 파일을 다른 형식으로 변환하는 것도 가능합니다. 예를 들어, PDF 파일을 이미지로 변환할 수 있습니다. 다음은 PDF 파일을 이미지로 변환하는 예제 코드입니다.

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

public class PDFConverter {
    public static void main(String[] args) {
        try {
            // PDF 파일 로드
            PDDocument document = PDDocument.load(new File("example.pdf"));

            // PDF 렌더러 생성
            PDFRenderer renderer = new PDFRenderer(document);

            // 각 페이지를 이미지로 변환
            for (int pageIndex = 0; pageIndex < document.getNumberOfPages(); pageIndex++) {
                BufferedImage image = renderer.renderImage(pageIndex);
                ImageIO.write(image, "PNG", new File("page" + pageIndex + ".png"));
            }

            // PDF 파일 닫기
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 “example.pdf” 파일을 로드하고, 각 페이지를 이미지로 변환하여 PNG 파일로 저장하는 예제입니다. 각 페이지의 이미지는 “page0.png”, “page1.png”, …과 같은 이름으로 저장됩니다.

마무리

이번 포스트에서는 Apache PDFBox를 사용하여 Java에서 PDF 파일을 다루는 방법에 대해 알아보았습니다. PDF 파일을 읽고, 생성하고, 변환하는 방법에 대해서 다루었습니다. Apache PDFBox는 매우 유용한 도구로써 다양한 작업을 수행할 수 있으므로 필요한 작업에 맞게 활용할 수 있습니다.

참고 자료