Development

Apache PDFBox® - A Java PDF Library 입문 (2)

스벅오늘의커피·2017년 8월 11일·조회 5,562

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 라는 파일이 생성됩니다.

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.