html2pdf 实现思路和代码
主要代码参考了 这篇帖子http://www.iteye.com/topic/509417,写的非常不错。尤其看他的的解决问题的思路特别受启发,我在看这篇帖子之前也看到了flying-saucer ,并且下载了jar包做了例子,但是没有成功我就匆忙放弃了,又踏上了寻找的路途。 以后要记得看 要找的项目的介绍,如果合适,就去看文档,文档里面一般是非常全面的。
首先itext就不用说了,自己去google。 直接上saucer的介绍:
?
。还有它对中文支持情况,如果你打算在html中使用中文,就必须在 css中全局定义 字体。并在 代码中 添加该字体文件。否则是不能显示中文的。
?
上代码
?
public static void main(String[] args) throws Exception { String inputFile = "index11.html"; System.out.println(new File(inputFile).getAbsolutePath()); String url = new File(inputFile).toURI().toURL().toString(); String outputFile = "firstdoc.pdf"; OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); renderer.setDocument(url); // 解决中文支持问题 ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); // 你可以把该文件放到项目中,这样打包后就不用依赖机器环境了// 我这里指定为sinsun 是因为我在css中指定 了字体为 宋体 // 解决图片的相对路径问题 (这里我发现不用指定 ,图片显示也会正常,只是图片必须要指定为相对路径) // renderer.getSharedContext().setBaseURL("file:/D:/grails-work/html2pdf/"); renderer.layout(); renderer.createPDF(os); os.close(); }???
rar中有html和css图片,还有生成的pdf,也有需要的jar,可以自行测试。仅在此记录一下,我也正在看 文档,有了新的想法,再加