如果有fo文件,则可以直接转换成pdf。具体方法如下:
一个fo文件simple.fo:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="main"
margin-top="36pt" margin-bottom="36pt"
page-width="8.5in" page-height="11in"
margin-left="72pt" margin-right="72pt">
<fo:region-body margin-bottom="50pt" margin-top="50pt"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="main">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="14pt" line-height="17pt">
This is a paragraph of text. Notice that as
<fo:inline font-style="italic">this meaningless
prose</fo:inline> drones on and on, the FOP
software automatically calculates line breaks for us.
Isn't that fascinating?
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
转换函数 foptest.java:
package src;
import java.io.*;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.apache.fop.apps.*;
public class foptest{
public static void main(String[] args) {
try {
Driver driver = new Driver();
//设置要转换的fo文件名
//driver.setInputSource(new InputSource (args[0]));
driver.setInputSource(new InputSource ("f://tomcat5//webapps//myxml//xmldata//simple.fo"));
//设置输出文件名
//driver.setOutputStream(new FileOutputStream(args[1]));
driver.setOutputStream(new FileOutputStream("f://tomcat5//webapps//myxml//xmldata//simple1.pdf"));
//设置转换类型
//还可以为RENDER_PCL,RENDER_PS,RENDER_TXT,RENDER_MIF
driver.setRenderer(Driver.RENDER_PDF);
//开始转换
driver.run();
}
catch( Exception e ){
e.printStackTrace();
}
}
}
编译执行即可。
参考:
HolyfairHolyfair@sina.com的XML文件到RTF和PDF的转换