The Spark of Thinking

          Focus on Eclipse Tools.

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            3 隨筆 :: 27 文章 :: 4 評論 :: 0 Trackbacks
          最近調查了一個新鮮東東。XSL-FO和FOP,用來將FO文件生成PDF文件,覺得它是個不錯的東東,所以記下來,與大家分享。
          相關術語:
          XSL-FO(XML?Stylesheet?Language-Formatting?Objects)
          XSL-T(XSL Transformations)
          FOP?(Formatting?Objects?Processor)?
          英文教程:
          http://www.w3schools.com/xslfo/default.asp
          FOP下載地址:
          http://apache.justdn.org/xml/fop/
          http://www.onjava.com/pub/a/onjava/2002/10/16/fop.html
          注意:fop.jar要放在你的CLASSPATH中。
          ?
          命令格式:
          -------------------------------------------------------------------
          至于XSL-FO的起源,特點和作用我就不多啰嗦了,祥細說明在網上到處都是,自已去看吧。我只想來點實用的。在這里只要了解一點,XSL-FO他只是描述了頁面展現給用戶的時候它應該是什么樣子的就行了。
          ?
          1:直接將fo文件通過FOP命令轉換成pdf文件。
          格式: fop test.fo test.pdf
          ?
          2:將xml+xslt(樣式表文件)轉換成pdf文件。
          格式:fop -xsl test.xsl -xml test.xml -pdf test.pdf
          --------------------------------------------------------------------
          ?
          對雙字節(中/日文)的支持:
          --------------------------------------------------------------------
          這里我只介紹日文的例子,中文照著做就行了。
          實現步驟:
          1.使用批處理生成字體文件(XML)
          java -cp build\fop.jar;lib\avalon-framework-cvs-20020806.jar; org.apache.fop.fonts.apps.TTFReader -ttcname "MS Gothic" C:\WINNT\Fonts\MSGOTHIC.TTC msgothic.xml
          注意:TTC文件和TTF文件的生成方式不同。
          上面給出的是TTC字體文件的例子。
          TTF命令格式是:
          java -cp build\fop.jar;lib\avalon-framework-cvs-20020806.jar; org.apache.fop.fonts.apps.TTFReader C:\WINNT\Fonts\Cyberbit.ttf msmincho.xml
          ?
          上面只用到了fop.jar和avalon-framework-cvs-20020806.jar,這因為我的FOP Ver是0.20.5,如果小于這個版本則要加上其他的包,這個在網上的教程沒有說,
          結果我用他們給出的命令格式狂試,結果就是出錯,最后還是在apache網上找到了正解,
          擦汗....
          ?
          2.將生成的字體文件注冊到fop。
          修改下面的配置文件conf/userconfig.xml
          增加下面的內容:
          <!-- Example Japanese fonts -->
          ?<font metrics-file="D:\xslfo\fop-0.20.5\msgothic.xml" embed-file="c:\winnt\fonts\msgothic.ttc" kerning="yes">
          ??? <font-triplet name="Gothic" style="normal" weight="normal"/>
          ??? <font-triplet name="Gothic" style="normal" weight="bold"/>
          ??? <font-triplet name="Gothic" style="italic" weight="normal"/>
          ??? <font-triplet name="Gothic" style="italic" weight="bold"/>
          ?</font>
          ?
          3.利用FOP再次生成PDF文件(FOP命令格式有變)
          修改你的FOP.BAT批處理文件,將最后一行
          java -cp "%LOCALCLASSPATH%" org.apache.fop.apps.Fop %1 %2 %3 %4 %5 %6 %7 %8
          ?
          修改成
          java -cp "%LOCALCLASSPATH%" org.apache.fop.apps.Fop -c conf/userconfig.xml %1 %2 %3 %4 %5 %6 %7 %8
          也就是增加了-c conf/userconfig.xml參數。
          網上很多地方這一點也沒說到,害得我注冊好字體后怎么試都不成功,生成的PDF就是不能正常顯示日文。后來想想修改后的配置文件沒有用到,到網上查了一下才知道那里要修改一下,增加-c參數,我狂暈~~~~~。
          ?
          要驗證你的日文是否被正確顯示,針對FO文件需要修改以下地方有:
          原:<fo:block font-size="20pt" font-family="serif"
          ??????????????? line-height="30pt">
          ??????? Hello~kaegunテスト
          ????? </fo:block>
          現:<fo:block font-size="20pt" font-family="Gothic"
          ??????????????? line-height="30pt">
          ??????? Hello~kaegunテスト
          ????? </fo:block>
          ?
          如果你是用XML+XSLT的方式成生PDF,則要修改xsl文件
          原:<xsl:template match="name">??????
          ?????? <fo:block font-size="18pt"
          ???????????? font-family="serif"
          ???????????? line-height="24pt"
          ???????????? space-after.optimum="15pt"
          ???????????? background-color="blue"
          ???????????? color="white"
          ???????????? text-align="center"
          ???????????? padding-top="3pt">
          ???????? <xsl:value-of select="."/>
          ?????? </fo:block>
          ?</xsl:template>
          現:<xsl:template match="name">??????
          ?????? <fo:block font-size="18pt"
          ???????????? font-family="Gothic"
          ???????????? line-height="24pt"
          ???????????? space-after.optimum="15pt"
          ???????????? background-color="blue"
          ???????????? color="white"
          ???????????? text-align="center"
          ???????????? padding-top="3pt">
          ???????? <xsl:value-of select="."/>
          ?????? </fo:block>
          ?</xsl:template>
          經過上述操作后,用新的批處理命令即可生成能正確顯示日文的PDF文件了。
          posted on 2006-07-24 10:03 The Spark of Thinking 閱讀(599) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 克什克腾旗| 始兴县| 滦平县| 海南省| 苍南县| 丹棱县| 龙泉市| 湖南省| 广汉市| 库尔勒市| 遂昌县| 长葛市| 东莞市| 云浮市| 涡阳县| 浦江县| 台州市| 克什克腾旗| 金华市| 神池县| 蓝田县| 陆河县| 托克托县| 长沙县| 兰坪| 错那县| 江源县| 同德县| 宿松县| 同仁县| 灵石县| 赤壁市| 庆城县| 天台县| 金乡县| 当雄县| 永胜县| 永昌县| 铜川市| 永宁县| 德阳市|