Java后台⽤html2image实现将html⽂件转为图⽚
maven依赖:
<dependency>
<groupId>gui.ava</groupId>
<artifactId>html2image</artifactId>
<version>0.9</version>
</dependency>
Java 代码:
public static void switchToPic(InputStream inputStream, OutputStream out, String fileName)
throws IOException {
StringBuffer out1 = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = ad(b)) != -1;) {
out1.append(new String(b, 0, n));
}
String html = String();
HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
imageGenerator.loadHtml(html);
//这⾥如果指定了盘符,可以直接存在本地,⾃⼰本地写demo的话可以⽤
String imageName = "C:\\jpg\\"+ UUID.randomUUID().toString() + ".png";
imageGenerator.saveAsImage(fileName);
/html代码转链接
/输出流转换 = 将BufferedImage转换为InputStream桥接
BufferedImage buffimg = BufferedImage();
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(buffimg, "png", os);
//输出流将⽣成的png⽂件输出到浏览器中
InputStream input = new ByteArray());
byte[] buffer = new byte[512];
int bytesToRead = -1;
while ((bytesToRead = ad(buffer)) != -1) {
out.write(buffer, 0, bytesToRead);
}
}
附:
html2image  api介绍
HtmlImageGenerator Methods
loadUrl(url) - Loads HTML from URL object or URL string. (从url载⼊html)
loadHtml(html) - Loads HTML source. (载⼊本地html)
saveAsImage(file) - Save loaded HTML as image. (以图⽚形式保存html)
saveAsHtmlWithMap(file, imageUrl) - Creates an HTML file containing client-side image-map <map>generated from HTML's links. (创建⼀个HTML⽂件包含客户端image-map)
getLinks() - List all links in the HTML document and their corresponding href, target, title, position and dimension. (列出所有在HTML⽂档的链接和相应href、⽬标、头衔、位置和尺⼨)
getBufferedImage() - Get AWT buffered image of the HTML. (获得awt,html缓冲后的图⽚)
getLinksMapMarkup(mapName) - Get HTML snippet of the client-side image-map <map> generated from the links.
(HTML代码段⾥获得的客户端image-map <;地图>产⽣的链接)
get/setOrientation(orientation) - Get/Set document orientation (left-to-right or right-to-left). (get/set⽂本定位)
get/setSize(dimension) - Get/Set size of the generated image. (设置⽣成图⽚⼤⼩)
遇到的问题:
⼀、当你的html页⾯引⼊外部的CSS⽂件以及JS⽂件,⽣成的图⽚是⽆法带有这些动态效果的。也就是说,它不⽀持复杂的动态特性,只能⽀持写在html代码⾥的css效果。
⼆、当html代码⾥带有图⽚时,⽣成的程序必须有⼀定的等待时间,否则⽣成的图⽚打不开
Thread.sleep(5000);
三、图⽚格式最好png,反正我试过bmp和jpg的不好使
四、图⽚路径必须加上file:/// 或者直接写http的url,不⽀持相对路径写法
五、转换成功后,可能需要再做位图转换
六、我的table边框本地调试样式都是OK的,上了服务器表格的边框不见了,怎么都没有调出来,有朋友研究出来可以共享⼀下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。