使用cssbox将html文件转为图片文件
在我的另一篇博客 使用freemarker动态填充html并可转为图片中,大家已经了解到如何使用freemarker动态填充html文件了,那么如何将html文件转为图片文件呢?
1. 引入依赖
<dependency>
<groupId>net.sf.cssbox</groupId>
<artifactId>cssbox</artifactId>
<version>4.14</version>
</dependency>
2. 编写Util类
public class Html2ImageUtil {
public static void transferHtml2Image(String htmlFilePath, String imageFilePath, Integer width, Integer height) {
ImageRenderer render = new ImageRenderer();
render.setWindowSize(new Dimension(width, height), false);
String url = new File(htmlFilePath).toURI().toString();
try {
FileOutputStream out = new FileOutputStream(imageFilePath);
render.renderURL(url, out, ImageRenderer.Type.PNG);
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. 调用Util
Html2ImageUtil.transferHtml2Image("result.html", "result.png", WIDTH_IMAGE, HEIGHT_IMAGE);
然后就可在项目根目录下找到生成的名为"result.png"
的图片文件啦。
4. 存在的问题
对于外部引用的js
不支持;虽然存在不完美的地方,但仍然不失为一个好用的html
转图片的工具哦~
5. 改进
如果大家觉得效果不够好,可以尝试使用cssbox的5.0.0版本,详见我的另一篇博客:使用5.0.0版本的cssbox将html文件转为图片文件,并解决字体显示问题