[java] Java Apache PDFBox로 폰트 추가하기

PDF 파일을 생성하거나 편집할 때, Apache PDFBox는 매우 유용한 Java 라이브러리입니다. PDFBox를 사용하면 텍스트, 이미지, 폰트 등 다양한 요소를 다루는 것이 가능해집니다.

그러나 PDFBox에는 기본적으로 제공되는 폰트 외에 추가적인 폰트를 사용해야 할 때가 있습니다. 이번 글에서는 PDFBox로 폰트를 추가하는 방법에 대해 알아보겠습니다.

1. 폰트 파일 가져오기

PDFBox로 폰트를 추가하기 전에, 사용할 폰트 파일을 가져와야 합니다. 이 폰트 파일은 TrueType 또는 OpenType 포맷이어야 합니다. 폰트 파일은 온라인에서 다운로드하거나, 시스템의 폰트 디렉토리에서 찾을 수 있습니다.

2. 폰트 등록하기

폰트 파일을 가져왔으면, 해당 폰트를 PDFBox에 등록해야 합니다. 폰트를 등록하려면 PDFont 클래스의 register() 메소드를 사용해야 합니다. 다음은 폰트를 등록하는 코드입니다.

import org.apache.pdfbox.pdmodel.font.PDType0Font;

// ...

// 폰트 파일 경로
String fontFile = "path/to/fontfile.ttf";

try {
    // 폰트 파일 등록
    PDType0Font.register(document, new FileInputStream(fontFile));
} catch (IOException e) {
    e.printStackTrace();
}

위의 코드에서 documentPDDocument 객체로, 이 객체는 생성한 PDF 문서를 나타냅니다. PDType0Font.register() 메소드를 호출하여 폰트 파일을 등록합니다. 예외처리를 하는 것을 잊지 마세요.

3. 폰트 사용하기

폰트를 등록한 후에는 해당 폰트를 사용할 수 있습니다. PDPageContentStream 객체의 setFont() 메소드를 사용하여 폰트를 설정할 수 있습니다. 다음은 폰트를 설정하는 예제 코드입니다.

import org.apache.pdfbox.pdmodel.PDPageContentStream;

// ...

// 폰트 이름
String fontName = "FontName";

try {
    PDPageContentStream contentStream = new PDPageContentStream(document, page);

    // 폰트 설정
    contentStream.setFont(PDType0Font.load(document, fontName), fontSize);

    // 텍스트 그리기
    contentStream.beginText();
    contentStream.newLineAtOffset(x, y);
    contentStream.showText("Hello, World!");
    contentStream.endText();

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

위의 코드에서 documentPDDocument 객체이고, pagePDPage 객체입니다. PDPageContentStream 객체를 사용하여 폰트를 설정하고, beginText()endText() 사이에 텍스트를 그립니다.

PDType0Font.load() 메소드를 사용하여 등록한 폰트를 로드합니다. fontName은 폰트의 이름이며, fontSize는 텍스트의 크기를 나타냅니다. xy는 텍스트의 위치를 나타내는 좌표입니다.

이제 PDFBox를 사용하여 폰트를 추가할 수 있는 방법을 알게 되었습니다. 필요한 폰트 파일을 가져와서 등록하고, 해당 폰트를 사용하여 원하는 텍스트를 생성하실 수 있습니다.

참고 자료