Apache PDFBox® - A Java PDF Library 입문 (2)
지난 글을 통해 빈 PDF 문서를 만드는 방법을 알아보았지요.
오늘은 PDF 문서 안에 글자를 넣어보는 작업을 해보려고 합니다.
그러기 위해서는 추가적으로 폰트 라이브러리를 import 해야 합니다. 바로 fontbox 인데요.
Apache PDFBox 페이지에서 찾을 수 있습니다.
저는 fontbox-2.0.7.jar 라는 파일로 받아서 import 했구요.
만약 fontbox를 import 하지 않으면..
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/fontbox/type1/DamagedFontException at io.sarc.pdfboxtest.PDFBoxTest.createDocument(PDFBoxTest.java:21) at io.sarc.pdfboxtest.PDFBoxTest.main(PDFBoxTest.java:12) Caused by: java.lang.ClassNotFoundException: org.apache.fontbox.type1.DamagedFontException at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 2 more
이런 무시무시한 에려가 납니다.
그리고 나서 아래와 같이 코딩을 하면,
package io.sarc.pdfboxtest; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDType1Font; public class PDFBoxTest { public static void main(String[] args) { createDocument(); } private static void createDocument() { try (final PDDocument document = new PDDocument()) { final PDPage newDocument = new PDPage(); document.addPage(newDocument); final PDPageContentStream contentStream = new PDPageContentStream(document, newDocument); contentStream.beginText(); contentStream.setFont(PDType1Font.COURIER_BOLD, 12); contentStream.newLineAtOffset(150, 750); contentStream.showText("Hello World"); contentStream.endText(); contentStream.close(); document.save("HelloWorld.pdf"); System.out.println("Created successfully!"); } catch (IOException ioe) { System.out.println("Fail to create PDF while trying to create blank document - " + ioe); } } }
Hello World라는 내용을 가진 HelloWorld.pdf 라는 파일이 생성됩니다.