歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> DocBook文件轉換環境設定(下)

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

日期:2017/2/27 9:43:51   编辑:更多Linux
  安裝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檔,第二是在userconfig.xml檔案中加 入字形信息。 FOP套件中提供一個TTFReader的程序,TTFReader可以從ttf字形 檔產生matrics檔。為了執行上的便利,首先要將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檔了。假設系統中已經有文鼎楷書字形存放於 /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檔。 接著要編輯/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檔: $ xalan.sh -in test.xml -xsl /usr/share/sgml/docbook/docbook-xsl-1.48 /fo/bg5docbook.xsl-out test.fo 產生fo檔之後,再使用fop轉成pdf檔: $ 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網站免費下載。(全文完)




Copyright © Linux教程網 All Rights Reserved