这是在我之前写的扒取网页源码在本地生成html文档之后的新需求。
就是用户的需求变了,除了html,他们还需要pdf文档。
于是开始百度有那些方法,其实实现的方法有很多:itext、flying-saucer、wkhtmltopdf等等,其中itext对css等的支持不够、wkhtmltopdf需要下载额外的exe工具,在我的使用场景里,采用了flying-saucer方式。
MAVEN依赖
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.8</version>
</dependency>
代码
System.out.println("Text PDF");
String inputFile = "html文档绝对路径";
String outFile = "带生成PDF文档路径+命名";
OutputStream os = new FileOutputStream(outFile);
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
//启动中文支持
fontResolver.addFont("C:\\Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
String url = new File(inputFile).toURI().toURL().toString();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
os.close();
注意
想让起支持中文和css样式,必须做到以下几点:
1- 对中文的支持:在后台代码必须注明字体,同时在html中的css中用 body:XXX 的方式指定字体。
2- 对颜色的支持:在html的css中,颜色必须使用RGB格式。