IT_Programming/XML

FOP를 이용한 PDF생성시 한글변환방법

JJun ™ 2006. 1. 31. 10:20
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

'IT_Programming > XML' 카테고리의 다른 글

Virtual Universal Server  (0) 2006.03.14
Dom 프로그래밍  (0) 2006.03.14
About JDOM & JDOM Programming with Java  (0) 2006.01.31
자바가 바라보는 XML  (0) 2006.01.31
XMLBeans를 이용한 xml binding  (0) 2006.01.31