[java] PDF 파일에서 특정 폰트 추출하기(Java Apache PDFBox 사용)

이번 기술 블로그에서는 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에서 특정 폰트를 추출하는 방법을 알아보겠습니다.

1. Apache PDFBox 라이브러리 소개

Apache PDFBox는 Java로 작성된 오픈 소스 라이브러리로, PDF 파일을 다루는 다양한 기능을 제공합니다. PDF 파일을 생성, 편집, 추출하는 등 다양한 작업을 수행할 수 있습니다. 이번 기술 블로그에서는 Apache PDFBox의 폰트 추출 기능을 사용하여 특정 폰트를 추출하는 방법을 소개하겠습니다.

2. Apache PDFBox 라이브러리 추가

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

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>버전</version>
</dependency>

버전은 최신 버전을 사용하는 것을 권장합니다.

3. 특정 폰트 추출하기

아래의 코드는 PDF 파일에서 특정 폰트를 추출하는 예제입니다.

import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.fontbox.ttf.TrueTypeFont;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.font.PDFontDescriptor;
import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;

public class FontExtractor {

    public static void main(String[] args) {
        // 폰트를 추출할 PDF 파일 경로
        String pdfFilePath = "파일경로.pdf";

        try (PDDocument document = PDDocument.load(new File(pdfFilePath))) {
            List<PDPage> pages = document.getDocumentCatalog().getAllPages();

            for (PDPage page : pages) {
                for (PDFontDescriptor fontDescriptor : page.getResources().getFontNames().values()) {
                    PDTrueTypeFont font = (PDTrueTypeFont) fontDescriptor.getFont();
                    TrueTypeFont trueTypeFont = font.getTrueTypeFont();

                    // 폰트 정보 출력
                    System.out.println("폰트 이름: " + trueTypeFont.getName());
                    System.out.println("폰트 파일 경로: " + trueTypeFont.getFile().getAbsolutePath());
                    System.out.println("===========================================");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 주어진 PDF 파일에서 모든 페이지의 폰트를 추출하여 출력하는 예제입니다. pdfFilePath 변수에 추출할 PDF 파일의 경로를 설정한 후, 코드를 실행하면 폰트 이름과 폰트 파일 경로가 출력됩니다.

4. 실행결과 예시

아래는 실행 결과의 예시입니다.

폰트 이름: Arial-BoldMT
폰트 파일 경로: C:\Windows\Fonts\arialbd.ttf
===========================================
폰트 이름: ArialMT
폰트 파일 경로: C:\Windows\Fonts\arial.ttf
===========================================
폰트 이름: TimesNewRomanPS-BoldMT
폰트 파일 경로: C:\Windows\Fonts\timesbd.ttf
===========================================
...

위의 결과는 해당 PDF 파일에서 추출된 폰트들의 이름과 파일 경로를 보여줍니다.

5. 결론

이번 기술 블로그에서는 Java Apache PDFBox 라이브러리를 사용하여 PDF 파일에서 특정 폰트를 추출하는 방법을 알아보았습니다. PDF 파일의 폰트 정보를 추출하여 활용할 수 있다면 다양한 용도로 활용이 가능하므로, 소스 코드를 참고하여 원하는 폰트 추출 기능을 구현해보시기 바랍니다.