歡迎您光臨本站 註冊首頁

DocBook文件轉換環境設定(下)

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
   DocBook文件轉換環境設定(下)

白明弘

(文接上期第48頁)

安裝Formatter

使用XSL轉換文件時,如果要轉換成列印文件格式(如PDF、PostScript
等)時,通常必須分成兩個步驟,先用XSLT processor將文件轉換成
formatting objects,再用formatter將formatting objects轉換成
列印文件。FOP是Apache計畫所發展的一個formatter,可以把Formatting
Object格式的文件轉換成可列印文件,如PDF、PostScript等格式。
使用FOP同樣需要有Java執行環境。下面以FOP 0.20.3版為例,示範
FOP的安裝步驟:

1.從http://xml.apache.org 下載FOP 0.20.3版:

$ wget http://xml.apache.org/dist/fop/Fop-0.20.3-bin.tar.gz

2.將FOP套件解壓縮:

$ tar zxvf Fop-0.20.3-bin.tar.gz

3.將所有以jar為附文件名的檔案拷貝到Java的library目錄下:

$ cp Fop-0.20.3/build/*.jar /usr/java/jdk1.3.1/lib
$ cp Fop-0.20.3/lib/*.jar /usr/javaj/jdk1.3.1/lib

4.將conf及hyph目錄拷貝到適當的目錄下(這兩個目錄在中文化時
才用的到):

$ mkdir -p /usr/local/share/fop
$ cp -a Fop-0.20.3/conf /usr/local/share/fop
$ cp -a Fop-0.20.3/hyph /usr/local/share/fop

FOP安裝好之後,就可以將FO格式的文件轉換成PDF了。不過和xalan
一樣,執行FOP需要指定許多個CLASS PATH,所以還是得先寫一個
shell script把程序包裝起來。下面為shell script的範例,讀者
可以依據自己的環境做修改:

#!/bin/sh
# fop.sh -- wrapper of apache fop

# JAVA 解譯器的安裝路徑
JAVA=/usr/java/jdk1.3.1/bin/java

# JAVA library 的安裝路徑
JAVA_LIB=/usr/java/jdk1.3.1/lib

# 所有的類別路徑
JAR=」fop.jar \
logkit-1.0b4.jar\
sax.jar xerces.jar\
avalon-framework-4.0.jar\
batik.jar xalan.jar\
jimi-1.0.jar\
xalanj1compat.jar」

for i in $JAR
do
CLASSPATH=」$CLASSPATH:$JAVA_LIB/$i」
done


export CLASSPATH

echo CLASSPATH=$CLASSPATH
# 執行
$JAVA $FOP_OPTS org.apache.fop.apps.Fop 「$@」

將以上的shell script存成fop.sh,為了執行方便,可以拷貝到
/usr/local/bin。

中文化環境設定

如已完成前述安裝作業,即已經把DocBook的文件轉換環境建立起
來了。而如果要處理中文文件,還有一些設定要修改,此部份包括
DocBook XSL Stylesheet及FOP的中文字形,以下將針對這兩個部份
分別說明。

DocBook XSL Stylesheet的中文化

DocBook XSL Stylesheet在轉換成FO時所指定的字形只有英文字
形,如果不修改就直接套用在中文文件上,則所有的中文字最後都
將被取代成「#」字型大小輸出。修改stylesheet時,為了保持DocBook
的完整起見,必須另外建立一個XSL檔來繼承原來的docbook.xsl,
並且修改部份的定義。假設取名為bg5docbook.xsl,其內容如下:


xmlns:fo=「http://www.w3.org/1999/XSL/Format」
xmlns:doc=「http://nwalsh.com/xsl/documentation/1.0」
exclude-result-prefixes=「doc」
version=『1.0』>



bkai
12
bkai





3.8cm
2.54cm






在bg5docbook.xsl中,使用xsl:import指令以繼承docbook.xsl的
設定,並且修改了三個部份的設定,字形及字體大小、紙張大小、
以及邊框大小。在中文化中,最重要的是設定字形,其餘的可視需
要而設定。在上例中,將文件的body及title字形設定為楷書(bkai),
紙張大小設定為A4,邊框則設定為左邊(內邊)3.8公分,右邊(外
邊)2.54公分。最後一個變數設定,是為了修正頁碼顯示的問題,
當DocBook中的字體大小超過10pt時,頁碼就會消失,原因是頁碼的
顯示區域太小,formatter將頁碼顯示的動作忽略了。該變數的預設
值為12pt,最大隻能放10pt的頁碼。要???????????????????
個問題只需將顯示區域設大一點就可以了,如上例設定為20pt。

DocBook在文件區域化的選項里,繁體中文文件的區域化屬性為zh_tw,
但是FOP所認得的區域化屬性為zh,如果FOP無法正確辨認出區域化
屬性,則輸出的中文文件的斷行會出現問題,這是因為FOP將連續的
中文字當作是不可分割的單位之故。本文的作法是將DocBook XSL
Stylesheet內的common目錄下的zh_tw.xml做修改,直將把第二行
language=「zh_tw」改成language=「zh」即可。

FOP的中文化

在前一節中,DocBook已指定輸出的字形為楷書,但是FOP本身並
沒有附中文字形,使用者必須自己加入中文字形。加入字形要做兩
件事情,第一是產生matrics?n,第二是在userconfig.xml檔案中加
入字形信息。

FOP套件中提供一個TTFReader的程序,TTFReader可以從ttf字形
檔產生matrics?n。為了執行上的便利,首先要將TTFReader包裝在
shell script程序中,下列為包裝範例:

#!/bin/sh
#
# ttfreader.sh
#

JAVALIB=」/usr/java/jdk1.3.1/lib」
CLASSPATH=」$JAVALIB/fop.jar:$JAVALIB/xerces.jar」

export JAVALIB CLASSPATH

java org.apache.fop.fonts.apps.TTFReader 「$@」

將檔案存成ttfreader.sh,並拷貝到/usr/local/bin,就可以用
來建立matrics?n了。假設系統中已經有文鼎楷書字形存放於
/usr/share/fonts/zh_TW/TrueType/bkai00mp.ttf目錄下,下列的
指令可以產生matrics文件:

$ ttfreader.sh -fn arphic_kai /usr/share/fonts/zh_TW/TrueType
/bkai00mp.ttf/usr/local/share/fop/conf/bkai.xml

執行完后,在/usr/local/share/fop/conf/目錄下會多出一個
bkai.xml的檔案,bkai.xml就是文鼎楷書的matrics?n。

接著要編輯/usr/local/share/fop/conf/userconfig.xml檔案,將
下列的設定加入到userconfig.xml檔案中:


embed-file=「/usr/share/fonts/zh_TW/TrueType/bkai00mp.ttf」>


embed-file=「/usr/share/fonts/zh_TW/TrueType/bkai00mp.ttf」>


embed-file=「/usr/share/fonts/zh_TW/TrueType/bkai00mp.ttf」>




編輯好userconfig.xml文件之後,FOP就可以使用文鼎楷書字形了。
試試中文的DocBook文件:


「http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd」>

這是一個中文的DocBook文件,供測試之用,看看中文字有
沒有出現?斷行有沒有斷得很混亂。如果沒有
問題,那就恭喜你了!



將上列的文字存成test.xml,然後使用下列的指令將文件轉成fo?n:

$ xalan.sh -in test.xml -xsl /usr/share/sgml/docbook/docbook-xsl-1.48
/fo/bg5docbook.xsl-out test.fo

產生fo檔之後,再使用fop轉成pdf?n:

$ fop.sh -c /usr/local/share/fop/conf/userconfig.xml-fo
test.fo -pdf test.pdf

產生test.pdf之後,再以acrobat reader開啟,檢查看看中文字
有沒有出現,再看看斷行有沒有斷得亂七八糟。

結語

本篇文章介紹了如何安裝及設定DocBook 文件轉換環境,並提供
簡單的範例供讀者參考。因為每個人的操作系統環境不盡相同,在
設定時可能有部份必須修改,如JAVA程序安裝的路徑等。

至於如何編輯DocBook文件,讀者必須另外研讀參考資料,例如,
中心呂學祥先生所撰寫之「使用Emacs編輯XML」文章
(http://www.sinica.edu.tw/~lu)以及,O』Reilly出版社出版的
「DocBook:The Definitive Guide」,這本書除了到書店購買以外,
讀者也可以直接從http://docbook.org網站免費下載。(全文完)



[火星人 ] DocBook文件轉換環境設定(下)已經有587次圍觀

http://coctec.com/docs/linux/show-post-67719.html