먼저 HTML을 PDF로 변환하는 라이브러리로 PD4ML이 있다.
http://www.pd4ml.com에서 pd4ml.pro.trial.360fx1.zip 파일을 다운받는다.
프로젝트에 pd4ml.jar 또는 pd4ml_demo.jar 파일과 ss_css2.jar을 포함시키고
다음과 같은 코드를 작성하면 PDF 파일이 생성되고 어도비리더로 보여준다.
==========java 코드=========
public void test() throws Exception {
String url = "file:///d:/임시/aa.html"; //http://www.naver.com
File pdfFile = new File("d:/output.pdf");
generatePDF(url, pdfFile, PD4Constants.A4);
String params = "C:\\Program Files\\Adobe\\Reader 8.0\\Reader\\AcroRD32.exe " + pdfFile.getAbsolutePath();
Runtime.getRuntime().exec(params);
System.out.println("done.");
}
private void generatePDF(String url, File outputPDFFile, Dimension format)
throws Exception {
java.io.FileOutputStream fos = new java.io.FileOutputStream(
outputPDFFile);
PD4ML pd4ml = new PD4ML();
pd4ml.setPageInsets(new Insets(0, 0, 0, 0));
pd4ml.setHtmlWidth(1200);
pd4ml.setPageSize(pd4ml.changePageOrientation(format)); // landscape
// page
// orientation
pd4ml.useTTF("java:fonts", true);//이 코드를 넣어야 한글이 정상적으로 만들어짐
pd4ml.setDefaultTTFs("Times New Roman", "Arial", "Courier New");//여기에 한글 관련 font의 이름을 넣고 싶었으나... 시간상... 그냥 테스트 못함
pd4ml.enableDebugInfo();
long start = System.currentTimeMillis();
pd4ml.render(new URL(url), fos);
System.out.println("done in " + (System.currentTimeMillis() - start) + "ms");
}
==========HTML=========
<html>
<body>
<font face="Gulim"><!-- 폰트를 지정함 -->
한글 Test
</font>
</body>
</html>
단 이렇게 한글이 변환되게 하려면 fonts.jar를 생성해서 프로젝트에 포함시켜야 한다.
========fonts.jar 생성 방법========
1. 첨부된 fonts.jar 파일을 D:/temp/ 폴더에 푼후
2. fonts/pd4fonts.properties 파일에 한글 관련 폰트를 추가한다.(아래에 샘플 있음)
(파일명은 대소문자를 가리므로 주의!)
3. fonts 디렉토리에 c:/windows/fonts 폴더의 TTF 파일을 추가한다
(TTC는 지원하지 않는다고 함 - 확인해 보지는 못했음)
(한글 관련 TTF만 추가해도 될 듯... 모든 TTF를 추가하면 pd4fonts.jar가 100M 정도의 크기가 되어 버림)
TTC 폰트를 사용하려면 변환툴을 사용하여 TTF 로 변환하여 사용한다.(역시 해보지는 않았음)
(Gulim 체의 경우 TTC만 있고 TTF는 없으므로 TTC를 TTF로 변환하거나 다른 굴림체를 fonts/pd4fonts.properties 에 설정한다.)
4. fonts/ 폴더를 fonts.jar 파일로 만든다
5. 새로 생성된 fonts.jar 파일을 프로젝트의 build path에 포함시킨다.
=======fonts/pd4fonts.properties 파일 샘플=======
#this is an autogenerated file. please remove manually any references to copyrighted fonts
#Fri Apr 17 20:00:52 CEST 2009
Arial=arial.ttf
Arial\ Bold=arialbd.ttf
Arial\ Bold\ Italic=arialbi.ttf
Arial\ Italic=ariali.ttf
Arial\ Unicode=ARIALUNI.TTF
Batang=Batang.TTF
Batangche=Batangche.TTF
Courier\ New=cour.ttf
Courier\ New\ Bold=courbd.ttf
Courier\ New\ Bold\ Italic=courbi.ttf
Courier\ New\ Italic=couri.ttf
Daum_Regular=Daum_Regular.ttf
Daum_SemiBold=Daum_SemiBold.ttf
Dotum=Dotum.TTF
Dotumche=Dotumche.TTF
Century\ Gothic=GOTHIC.TTF
Century\ Gothic\ Bold=GOTHICB.TTF
Century\ Gothic\ Bold\ Italic=GOTHICBI.TTF
Century\ Gothic\Italic=GOTHICI.TTF
Gulim=NGulim.TTF
Gulimche=Gulimche.TTF
Gungso=Gungso.TTF
Gungsoche=Gungsoche.TTF
Malgun=MALGUN.TTF
Malgun\ Bold=MALGUNBD.TTF
MS\ Gothic=MSGothic.TTF
MS\ Mincho=MSMincho.TTF
MS\ PGothic=MSPGothic.TTF
MS\ PMincho=MSPMincho.TTF
MS\ UI\ Gothic=MSUIGothic.TTF
Yahei=MSYH.TTF
Yahei\ Bold=MSYHBD.TTF
Nanum\ Gothic=NanumGO.ttf
Nanum\ Gothic\ Bold=NanumGOBold.ttf
Nanum\ Gothic\ Extra\ Bold=NanumGOExtraBold.ttf
Nanum\ Myongjo=NanumMJ.ttf
Nanum\ Myongjo\ Bold=NanumMJBold.ttf
Nanum\ Myongjo\ Extra\ Bold=NanumMJExtraBold.ttf
SimHei=SIMHEI.TTF
SimSun\ Bold=SIMSUNB.TTF
Tahoma=TAHOMA.TTF
Tahoma\ Bold=TAHOMABD.TTF
Times\ New\ Roman=times.ttf
Times\ New\ Roman\ Bold=timesbd.ttf
Times\ New\ Roman\ Bold\ Italic=timesbi.ttf
Times\ New\ Roman\ Italic=timesi.ttf
Trebuchet\ MS=TREBUC.TTF
Trebuchet\ MS\ Bold=TREBUCBD.TTF
Trebuchet\ MS\ Bold\ Italic=TREBUCBI.TTF
Trebuchet\ MS\ Italic=TREBUCIT.TTF
Verdana=VERDANA.TTF
Verdana\ Bold=VERDANAB.TTF
Verdana\ Italic=VERDANAI.TTF
Verdana\ Bold\ Italic=VERDANAZ.TTF
'Java+Jsp' 카테고리의 다른 글
jdbc를 이용한 db별 접속방법 (0) | 2011.11.22 |
---|---|
Finder.java 파일 사이즈, 라인수 확인하기 (0) | 2011.10.07 |
POI, XOM으로 엑셀파일(xls, xlsx) , XML 처리 (0) | 2011.02.24 |
Singleton pattern (싱글톤 패턴) (0) | 2010.10.27 |
Eclipse에서 JPetStore 테스트 환경 구축 - Spring Framework 2.5, iBatis (0) | 2010.10.01 |