前言
之前写了一篇html转图片的 文章,使用中文时会出现乱码情况,后来又从网上找了下信息,这篇主要介绍下另一个转换库。
依赖
xml
<!-- 用于将html转图片-->
<dependency>
<groupId>gui.ava</groupId>
<artifactId>html2image</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.2</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>core-renderer</artifactId>
<version>R8</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 用于将html转图片 end-->
相关代码
java
/**
* @param html html code
* @param imagePath absolute path, example:'/tmp/test.png'
* @param height png height
* @param width png width
* @return
*/
public static boolean html2Image(String html, String imagePath, int width, int height) {
try {
HtmlParser htmlParser = new HtmlParserImpl();
htmlParser.loadHtml(html);
ImageRenderer imageRenderer = new ImageRendererImpl(htmlParser);
imageRenderer.setWidth(width);
if (height > 0){
imageRenderer.setHeight(height);
}
imageRenderer.saveImage(imagePath);
imageRenderer.clearCache();
return true;
}catch (Exception e){
log.error("html2Image failed,", e);
return false;
}
}
测试
注:这里直接测试测试生成图片相关接口
java
/**
* 测试图片生成
*/
@Test
void testHtml2Image(){
HtmlParser htmlParser = new HtmlParserImpl();
htmlParser.load(new File("F:\\\\test\\\\testss.html"));
ImageRenderer imageRenderer = new ImageRendererImpl(htmlParser);
//高度不需要设置,宽度要比html多40
imageRenderer.setWidth(360);
imageRenderer.saveImage("F:\\test\\png-output.png");
imageRenderer.clearCache();
}
如果出现乱码,请确认操作系统里是否有html中配置的字体,如果没有,安装字体再测试,应该没啥问题了。
字体安装可以 参考链接