Html2Image 使用java原因将html样式转成图片
使用html2Image,网上有很多关于这方面的代码,包括github上,但是呢我自己尝试了很多次,画出来的东西识别不了一些CSS,即不能识别全部的CSS样式导致画出来的图片不是预期的样式。
1.尝试1 gui.ava.html2image
<dependencies>
<!-- https://mvnrepository.com/artifact/gui.ava/html2image -->
<dependency>
<groupId>gui.ava</groupId>
<artifactId>html2image</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>
HtmlImageGenerator htmlImageGenerator = new HtmlImageGenerator();
htmlImageGenerator.loadHtml(htmlText);
BufferedImage img = null;
try {
img = htmlImageGenerator.getBufferedImage();
// 线程休眠
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
htmlImageGenerator.getBufferedImage();
htmlImageGenerator.saveAsImage("C:\\Users\\Administrator\\Desktop\\test.png");
htmlImageGenerator.saveAsHtmlWithMap("cover.html","hello-world.png");
画出来的图片布局是很满意但是呢,如果html页面有图片则需要暂停一下线程估计图片画完了,等到线程回复然后输出,(这个时间具体多少不可控)。
2.尝试2 com.github.xuwei-k.html2image
<dependency>
<groupId>com.github.xuwei-k</groupId>
<artifactId>html2image</artifactId>
<version>0.1.0</version>
</dependency>
有些CSS样式无法识别,导致整体布局有偏差。后来使用最原始的html来画整体布局,大致布局是正确的但是html上左边和上边没有白边,结果画出来的就有白边。包括分辨率什么的效果也不是很好。
3尝试三 java原生
跟gui.ava.html2image类似也是需要线程等待。
最后我使用的是java原生的Graphics2D和BufferedImage完成图片绘制的,没有再使用html转图片。我的时间比较着急所以也没有再去找有没有新的方式,所以希望大家有什么新的方法或者我的方法有问题的地方帮我指出,谢谢!