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();
}
위의 코드에서 document
는 PDDocument
객체로, 이 객체는 생성한 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();
}
위의 코드에서 document
는 PDDocument
객체이고, page
는 PDPage
객체입니다. PDPageContentStream
객체를 사용하여 폰트를 설정하고, beginText()
와 endText()
사이에 텍스트를 그립니다.
PDType0Font.load()
메소드를 사용하여 등록한 폰트를 로드합니다. fontName
은 폰트의 이름이며, fontSize
는 텍스트의 크기를 나타냅니다. x
와 y
는 텍스트의 위치를 나타내는 좌표입니다.
이제 PDFBox를 사용하여 폰트를 추가할 수 있는 방법을 알게 되었습니다. 필요한 폰트 파일을 가져와서 등록하고, 해당 폰트를 사용하여 원하는 텍스트를 생성하실 수 있습니다.