`
xpenxpen
  • 浏览: 703910 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flying-saucer生成PDF

    博客分类:
  • PDF
阅读更多
    不久前我的博客记录了一种用fop生成PDF的方法,个人感觉不是太好。有以下原因:
fop有点老了,而且更新不活跃。里面依赖的一些jar包都是10年前的老古董了。像xalan,xml-apis这些开源包现在都已经被打包到JDK里面去了,还有batik,avalon这些包引入数量达到20个左右,非常不经济环保。

    最近,本人又找到了一个开源包,叫flying-saucer,也能生成PDF,清清爽爽就2个jar包搞定,用maven也简单,而且更新比较活跃,它内部是调用的itext来生成PDF。
        <dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>flying-saucer-pdf-itext5</artifactId>
            <version>9.0.6</version>
        </dependency>


以下是通用的生成PDF的方法,很简单,2个参数,输入是HTML,输出就是PDF
private boolean convertHtmlToPdf(String inputFile, String outputFile) throws Exception {

    OutputStream os = new FileOutputStream(outputFile);
    ITextRenderer renderer = new ITextRenderer();
    String url = new File(inputFile).toURI().toURL().toString();

    renderer.setDocument(url);

    renderer.layout();
    renderer.createPDF(os);

    os.flush();
    os.close();
    return true;
}


详细代码我不贴了,感兴趣的童鞋自己去下载我放在github上的工程吧.
测试代码见org.xpen.hello.xml.xslt.XsltTest,演示了XSLT转换XML,并转为PDF。

2014/10/22补充:
随着业务需求的复杂,xslt要写出来也越来越难维护,这时候倒也可考虑用fop,fo文件可以考虑用freemarker这类模板引擎生成。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics