Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


FOP를 이용한 PDF생성시 한글변환방법
 
FOP나 Cocoon을 사용할때 가장 큰 문제점이 바로 한글에 대한 변환이다. 여기서는 FOP에서 PDF로 변환될 데이터의 한글을 어떻게 처리할 수 있는지 예제를 통하여 살펴보도록 하자. ( 2003/03/08 ) 142
Written by ienvyou - 최지웅
1 of 1
 
FOP 한글 변환 사용방법

  FOP를 사용하면 FO 파일로부터 PDF 파일을 얻을 수 있습니다. 자세한 내용은 아파치 XML 프로젝트 
  홈페이지를 참고하도록 한다. 
  우선 FOP의 최신 버전을 받아혼다(0.18.1 이상). FOP도 자바 프로그램이지만 실행하기 
  편리하도록 만들어진 batch 파일과 쉘 스크립트 파일을 함께 만들도록 하자.
  한글 PDF를 얻기 위해서는 한글 트루타입 폰트(.ttf)가 필요하며, WIN2000같은 경우
  WINNT디렉토리 밑에 Fonts디렉토리에 폰트들이 준비되어 있는 것을 볼 수 있다.
  폰트가 준비되었으면 다음과 같이 폰트로 부터 metrics 파일을 얻어낼 수 있는데
  아래와 같은 절차를 밟도록 하자.

아래의 내용을 fontGen.bat란 파일이름으로 저장한다

@echo off
set FOP_HOME=D:\XML\fop-0.20.4rc
java -cp %FOP_HOME%\build\fop.jar;%FOP_HOME%\lib\batik.jar;%FOP_HOME%\lib\xalan-2.3.1.jar;
%FOP_HOME%\lib\xercesImpl-2.0.1.jar;%FOP_HOME%\lib\xml-apis.jar;
%FOP_HOME%\lib\avalon-framework-cvs-20020315.jar;%FOP_HOME%\lib\logkit-1.0.jar;
%FOP_HOME%\lib\jimi-1.0.jar org.apache.fop.fonts.apps.TTFReader  %1 %2 %3 %4 %5 %6 %7 %8

 FOP홈을 당신의 FOP가 설치된 디렉토리로 바꾸도록 하여야 함은 물론이다

아래와 같이 실행을 하도록 한다.

Fop> fopGen NGULIM.TTF ngulim.xml

  한글 트루타입 폰트로부터 만들어진 metrics 파일에는 폰트의 이름 부분에 �과
  같은 문자들이 포함되어질 수 있는데 이부분을  직접 편집기로 열어서 해당부분의 내용을 
  지워주어야 한다.

  이제 FOP/conf/userconfig.xml 파일을 편집한다. 다음과 같이 폰트와 해당 metrics 파일의 경로, 
  폰트 이름을 정확히 적어주어야 한다.

<fonts>
 <font metrics-file="ngulim.xml" kerning="yes"
                                        embed-file="c:\WINNT\Fonts\NGULIM.TTF">
    <font-triplet name="NewGulim" style="normal" weight="normal"/>
    <font-triplet name="Times Roman" style="italic" weight="normal"/>
    <font-triplet name="Times Roman" style="normal" weight="bold"/>
    <font-triplet name="Helvetica" style="normal" weight="normal"/>
    <font-triplet name="Helvetica" style="italic" weight="normal"/>
    <font-triplet name="Helvetica" style="normal" weight="bold"/>
    <font-triplet name="Courier" style="normal" weight="normal"/>
    <font-triplet name="Courier" style="italic" weight="normal"/>
    <font-triplet name="Courier" style="normal" weight="bold"/>
    <font-triplet name="monospace" style="normal" weight="normal"/>
    <font-triplet name="monospace" style="italic" weight="normal"/>
    <font-triplet name="monospace" style="normal" weight="bold"/>
  </font>
</fonts> 

  이렇게 하면 모든 경우에 한가지 폰트만 사용하게 되며, Times Roman이나 Helvetica 혹은 italic이나 
  bold에 각각 다른 폰트를 대응시키면 여러 폰트를 쓸 수 있게 된다.

아래의 예가 그 경우이다.

<fonts>
  <font metrics-file="\fop\A.xml" kerning="yes"
                                        embed-file="\fop\A.ttf">
    <font-triplet name="Times Roman" style="normal" weight="normal"/>
    <font-triplet name="Times Roman" style="italic" weight="normal"/>
    <font-triplet name="Times Roman" style="normal" weight="bold"/>
  </font>
  <font metrics-file="\fop\B.xml" kerning="yes"
                                        embed-file="\fop\B.ttf">
    <font-triplet name="Helvetica" style="normal" weight="normal"/>
    <font-triplet name="Helvetica" style="italic" weight="normal"/>
    <font-triplet name="Helvetica" style="normal" weight="bold"/>
  </font>
  <font metrics-file="\fop\C.xml" kerning="yes"
                                        embed-file="\fop\C.ttf">
    <font-triplet name="Courier" style="normal" weight="normal"/>
    <font-triplet name="Courier" style="italic" weight="normal"/>
    <font-triplet name="Courier" style="normal" weight="bold"/>
    <font-triplet name="monospace" style="normal" weight="normal"/>
    <font-triplet name="monospace" style="italic" weight="normal"/>
    <font-triplet name="monospace" style="normal" weight="bold"/>
  </font>
</fonts> 

이제 FOP로 FO파일을 PDF로 변환해보자. -c 옵션으로 userconfig.xml 파일을 적용시켜야 한다.

> FOP -c /fop/conf/userconfig.xml -fo test.fo -pdf test.pdf

FOP에는 xerces와 xalan도 포함되어 있어서 다음과 같이 하면 한번에 XML 파일로부터 
PDF 파일을 얻을 수 있을 것이다.

> FOP -c /fop/conf/userconfig.xml -xml resume.xml -xsl resume.xsl -pdf resume.pdf

Written by carouser : 2002-10-08
 
1
References
 
http://xml.apache.org
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD