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 阅读(561) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: