做pdf转换是很实用的工作。已然存在的的转换工具就有很多,其中包括一些成熟的商业软件。而作为java程序开发,我们将借助一个叫FOP的开源工具。
在开始转换之前,我们不得不认识先一下FOP并对它的使用做简单的了解。
FOP (Formatting Objects Processor) 是第一个基于XSL:FO的打印格式处理器,也是第一个与输出无关的格式处理器。它是一个Java程序,能够从对象树中读入然后生成渲染过的页面输出到指定的流。目前支持的输出格式有PDF,PCL,PS,SVG,XML(以树形结构表示),打印机,AWT,MIF和TXT。最主要的输出指的是PDF。
James Tauber - FOP 的最初作者。他开发了该工具的原始版本,而且很大方地开放了该代码,后来又将它移交给 Apache XML Project。(他还给该工具选了一个极好的名称;除了该名称是字首组合词之外,Webster 对 fop 的定义是“过分讲究外表的人”。)现在 James 是 Bowstreet 的首席 XML 设计师。Apache XML项目以开放与合作的方式开发的,提供商业品质的基于XML标准的解决方案。从标准的实施角度看,它能给标准机构(比如IETF和W 3C )提供反馈信息。
FOP主页 http://xml.apache.org/fop/
FOP使用方式
FOP有3种使用方式,分别为命令行,程序嵌入,XT 嵌入。这里将主要介绍如何在程序中嵌入FOP功能。将XML文件转换为PDF实际上分为2步,第1步是利用XSLT将XML转换为XSL-FO,第2步是将XSL-FO转换为PDF。这里只讲述如何进行第2步的转换编程。
下载fop包后,你需要在CLASSPATH中添加下述jar文件:
{FOP安装目录}/build/fop.jar
{FOP安装目录}/lib/batik.jar
{FOP安装目录}/lib/xalan- 2.0.0 .jar
{FOP安装目录}/lib/xerces- 1.2.3 .jar
{FOP安装目录}/lib/avalon-framework-4.0.jar
{FOP安装目录}/lib/logkit-1.0b4.jar
{FOP安装目录}/lib/jimi-1.0.jar
我是使用Eclipse,只需要在工程属性->构建路径中加入他们,就可以使用这个伟大的工具了。
下面是具体的程序:
这是一个xml文件 test.xml:
<FeatureSRS title="SRS">
<introduction>
<objective>objective here</objective>
<scope>scope here</scope>
<responsibilities>responsibilities here</responsibilities>
<references>reference here</references>
<DAA>
<term>
term here
</term>
<definition>
definition here
</definition>
</DAA>
</introduction>
<generalDescription>
<featureName>
<summary>summary here</summary>
<breakdown>breakdown here</breakdown>
</featureName>
<requirement>
<content>
content here.
</content>
</requirement>
<requirement>
<content>
content2 here.
</content>
</requirement>
<featureInteractions>featureInteractions here</featureInteractions>
</generalDescription>
<strResources>
<strResource>
<estring>