닥북 모음집 리눅스 버전

자유 게시판

닥북 모음집 리눅스 버전

전체글글쓴이: tw2008 » 2008-10-15 9:27 pm

안녕하세요
닥북 모음집 윈도우 버전은 정말 너무나 훌륭합니다. 감사드립니다.
그런데 저희는 리눅스 환경에서 툴을 돌려야 하는데, 혹시 리눅스 버전 출시 계획은 없으신지요?

제가 지금 리눅스 포팅을 진행 중인데, 한글매트릭이 적용되지 않습니다. fo 파일의 폰트가 monospace인 부분만 PDF 파일에 한글로 출력되고, 나머지 요소의 내용들은 ###로 출력됩니다. ###로 출력되는 나머지 요소들은 어디서 얻어왔는지 폰트가 "serif,Symbol,ZapfDingbats"로 설정됩니다.

XSLTPROC를 돌린 후 FO 파일에서의 폰트 속성은 Windows에서도 마찬가지이긴 한데, Windows에서는 FOP.BAT을 돌리고 나면 이 부분이 해결됩니다.

하지만 리눅스에서는 FOP.BAT 파일을 돌려도 폰트매트릭 임베딩이 안됩니다. 참조하는 JAR 파일의 PATH와 관련이 있을 것으로 추측되는데, 아직까지는 해결의 조짐이 안보입니다. 답답해서 FOP.BAT을 돌리지 않고 바로 FOP를 적용해 보았으나, FOP.BAT을 적용했을 떄와 같은 결과입니다.

결국 FOP.BAT이 제 기능을 못하고 있다고 보여지는데요, 혹시 해결방안을 알고 계시다면 답변 부탁드리겠습니다.
tw2008 님에 의해 2008-10-16 3:39 pm 에 마지막으로 수정되었으며, 1 번 편집하였습니다.
tw2008
사용자
 
전체글: 4
가입일: 2008-10-12 8:40 pm

전체글글쓴이: 류광 » 2008-10-16 3:29 pm

혹시 도움이 될까 해서(그리고 미뤄둔 문서화 차원에서) 제가 알고 있는 부분들을 적어 보겠습니다...

DocBook XSL 차원에서(즉 FO 파일 생성 차원에서), 문서의 주요 글꼴들의 기본 설정은 docbook-xsl/fo/param.xsl 에 들어 있습니다. 예를 들어 본문의 기본 서체는 다음과 같이 정의됩니다.

<xsl:param name="body.font.family">serif</xsl:param>

이것은 xsltproc 명령의 옵션이나 커스텀화 XSL로 변경할 수 있는 하나의 매개변수이나, 현재 닥북 한국 스타일시트(dbk-fo.xsl 등)는 이 매개변수를 변경하지 않습니다.

이제 FOP로 넘어가서... serif는 단지 일반적인 서체 종류 이름일 뿐이고, PDF 렌더링을 위해서는 그것을 구체적인 글꼴과 연결시켜야 하는데요. 그에 대한 정보는 fop의 -c 옵션으로 지정하는 FOP 설정 파일에 들어 있습니다. (fop 옵션들은 http://xmlgraphics.apache.org/fop/0.94/ ... fop-script 를 보시길)

닥북 한국 모음집의 경우 conf/fop-config.xml 이 바로 FOP 설정 파일입니다. 그리고 이 설정 파일은 fop.bat가 아니라 fo2pdf.bat에서 지정합니다:
Code: Select All Code
@echo off
fop.bat -c %DOCBOOK_HOME%\conf\fop-config.xml -fo %1 -pdf %2


fop-config.xml에는 이런 형태의 설정이 있고요:
Code: Select All Code
<!-- +++ font configuration for [UnBatang] +++ -->
        <font kerning="yes" metrics-url="fonts/UnBatang.xml" embed-url="fonts/UnBatang.ttf">
          <font-triplet style="normal" weight="normal" name="serif"/>
          <font-triplet style="italic" weight="normal" name="serif"/>
          <font-triplet style="normal" weight="normal" name="UnBatang"/>
          <font-triplet style="italic" weight="normal" name="UnBatang"/>
        </font>

이에 의해, FOP는 fo 파일에서 serif라는 이름을 만나면 fonts/UnBatang.ttf(그리고 fonts/UnBatang.xml)를 사용합니다(...라고 알고 있습니다). 여기서 fonts/UnBatang.xml과 fonts/UnBatang.ttf는 상대 경로이고, 기준은 fop-config.xml 상단의 <base> 요소로 지정되어 있습니다. 이를테면
Code: Select All Code
<base>file:///D:/Docbook/DBKPAC~1.0/docbook</base>

형태입니다.

-------------
여기까지이고요.

정확한 상황은 모르겠지만, 증상으로 볼 때 FOP가 관련 파일들을 제대로 찾지 못하는 것 같습니다. 위에 언급된 디렉터리 및 파일 경로 설정들을 점검해 보시길...
류광
사용자
 
전체글: 438
가입일: 2003-12-27 12:02 am

전체글글쓴이: tw2008 » 2008-10-16 4:11 pm

안녕하세요

fo2pdf.bat 파일을 다음과 같이 작성한 다음 fop.bat을 쓰지 않고 툴을 실행시켜 보았습니다.

Code: Select All Code
/home/aaa/docbook/software/fop/fop -c /home/aaa/docbook/conf/fop-config.xml -fo $1 -pdf $2


fop-config.xml에서는 다음과 같이 path만 바꿔주었습니다.

Code: Select All Code
  <base>/home/aaa/docbook/</base>
        <font>
 
          <font>


그러나 결과는 programlisting 요소를 제외하고는 전부 ###으로 출력됩니다.
-c 옵션을 주었으나 마찬가지의 결과를 얻은 것이 되겠습니다.

이번에는 fop.bat을 쓰도록 fo2pdf.bat 파일을 수정한 후,

Code: Select All Code
./fop.bat -c /home/aaa/docbook/conf/fop-config.xml -fo $1 -pdf $2


fop.bat을 다음과 같이 작성했습니다.

Code: Select All Code
java -cp /home/aaa/docbook/software/fop/build/fop.jar:/home/aaa/docbook/software/fop/lib/avalon-framework-4.2.0.jar:/home/aaa/docbook/software/fop/lib/batik-all-1.6.jar:/home/aaa/docbook/software/fop/lib/commons-io-1.3.1.jar:/home/aaa/docbook/software/fop/lib/commons-logging-1.0.4.jar:/home/aaa/docbook/software/fop/lib/resolver.jar:/home/aaa/docbook/software/fop/lib/serializer-2.7.0.jar:/home/aaa/docbook/software/fop/lib/xalan-2.7.0.jar:/home/aaa/docbook/software/fop/lib/xercesImpl-2.7.1.jar:/home/aaa/docbook/software/fop/lib/xml-apis-1.3.02.jar:/home/aaa/docbook/software/fop/lib/xmlgraphics-commons-1.2.jar org.apache.fop.cli.Main $1 $2


그런 다음 툴을 실행하니 이번엔 programlisting 요소까지 전부 ###로 출력됩니다. 뭔가 변화가 있는 것으로 보아서는 fop.bat을 실행하는 것이 맞지 싶습니다.
그런데 FOP.BAT의 역할이 무엇인가요? :?:
tw2008
사용자
 
전체글: 4
가입일: 2008-10-12 8:40 pm

전체글글쓴이: 류광 » 2008-10-16 4:38 pm

docbook/bin에 있는 FOP.bat은 -cp 경로들을 구축하는 것 외에, 주어진 모든 명령줄 인수들을 %FOP_CMD_LINE_ARGS% 라는 변수로 합쳐서 org.apache.fop.cli.Main에 넘겨줍니다. (bash의 $*에 해당.) 마지막에 제시하신 fop.bat 는 그 부분이 빠져 있으므로 -c 옵션이나 -fo, -pdf가 org.apache.fop.cli.Main에 전달되지 않습니다.

한편, 첫 예(docbook/software/fop/fop를 직접 실행)에서는 -cp 경로들이 제대로 만들어지지 않을 수 있습니다.

일단은 마지막 예에 나온 fop.bat(-cp 경로들이 명시적으로 지정된)에서

... org.apache.fop.cli.Main $1 $2

... org.apache.fop.cli.Main -c /home/aaa/docbook/conf/fop-config.xml -fo $1 -pdf $2

로 바꿔 보시고요. 그리고 -d나 -x 옵션도 추가해 보세요 ( http://xmlgraphics.apache.org/fop/0.94/ ... fop-script 참고 ).
류광
사용자
 
전체글: 438
가입일: 2003-12-27 12:02 am

엇...이럴 수가...

전체글글쓴이: tw2008 » 2008-10-16 5:10 pm

이런...됩니다 *^^*
완전 감사드립니다!!!!
원하시는 대로 apt-get으로 만들 가능성이 있다면, 추후에 공유하도록 하겠습니다. 페이지 레이아웃때문에 XSL-FO를 좀 만져야 하는데요, docbook/fo/*.xsl 파일들이 각각 어떤 기능을 하는지 개요라도 알 수 있으면 많은 도움이 되겠습니다.
tw2008
사용자
 
전체글: 4
가입일: 2008-10-12 8:40 pm

전체글글쓴이: 류광 » 2008-10-16 6:19 pm

축하합니다~ :) 리눅스용 패키지가 꼭 만들어지면 좋겠습니다.

그리고 docbook-xsl의 파일들은 건드리지 않는 게 좋습니다. [wiki]닥북 XSL 커스텀화[/wiki]와 [wiki]닥북 XSL 매개변수 설정[/wiki]을 먼저 보시고요. 각 매개변수들에 대해서는 [wiki]닥북 XSL 매개변수 설정[/wiki] 상단에 링크된 문서들이 정답이고, 여기 질문과 답변 게시판에서도 몇 가지 매개변수에 대한 논의를 찾을 수 있습니다.
류광
사용자
 
전체글: 438
가입일: 2003-12-27 12:02 am


다시 돌아감: 자유 게시판

접속 중인 사용자

이 포럼에 접속 중인 사용자: 접속한 회원이 없음 그리고 손님들 6 명

cron