Html2Image转换html成图片的一些坑

  在将html转成图片这个领域,Html2Image这个工具使用率是不低的。但是这个工具有个明显的坑。

  一、当你的html页面引入外部的CSS文件以及JS文件,生成的图片是无法带有这些动态效果的。也就是说,它不支持复杂的动态特性,只能支持写在html代码里的css效果。

  二、当html代码里带有图片时,生成的程序必须有一定的等待时间,否则生成的图片就会是这样的

如果你不想得到这样的图片,你需要设法在代码生成图片前让程序等待一会,比如Thread.sleep(8000);

 1 package htmlToImg;
 2 
 3 import gui.ava.html.image.generator.HtmlImageGenerator;
 4 
 5 public class HtmlToImgTest {
 6     public static void main(String[] args) {
 7         HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
 8 //        String html = "<div class=\"header\"><ul class=\"nav\"><li><a href=\"/getAllQuestion\">题库管理</a>"
 9 //        + "<ul class=\"second-nav\"><li style=\"display:inline-block;width:800px;height:250px\"><a href=\"/getAllQuestion\">题目列表</a></li><li><a href=\"/getQuestion\">查找题目</a></li><li><a href=\"/addQuestionPage\">增加题目</a></li>"
10 //        + "<li style=\"display: none\"><a href=\"#\">编辑题目</a></li><li style=\"display: none\"><a href=\"#\">删除题目</a></li></ul></li></ul></div>";
11 //        String html = "<p class=\"tiy\"><a target=\"_blank\" href=\"/tiy/t.asp?f=csse_font_size_em_percent\">亲自试一试</a></p>";
12         String html = "<div style=\"width: 500px; height: 500px;\"><img src=\"http://car0.autoimg.cn/upload/spec/8090/u_20101129100303187264.jpg\" width=\"350\" height=\"233\"><a href=\"#\" style=\"color: red;\">testImage</a></div>";
13         imageGenerator.loadHtml(html);
14         try {
15 //            Thread.sleep(5000);
16             imageGenerator.getBufferedImage();
17             Thread.sleep(8000);
18         } catch (InterruptedException e) {
19             e.printStackTrace();
20         }
21         imageGenerator.saveAsImage("d:/car.png");
22         imageGenerator.saveAsHtmlWithMap("hello-world.html", "d:/car.png");
23         System.out.println("finish");
24     }
25 }
View Code

这样就得到了正常显示的图片了

  初步估计是工具加载流未完成就进行图片的生成以及保存工作,具体原因有时间再深究,先记录下这个API的一些小瑕疵。

posted @ 2017-08-14 17:30  night_joe  阅读(23960)  评论(0编辑  收藏  举报