java生成图表格式图片(2)

上一篇可以很方便地实现图表图片的生成,并且支持多图表合并,但是还有两个缺陷,那就是文字居中和换行,因为所有元素都是使用绝对位置绘制出来的。这一篇通过生成Html,并转成Image的方式,可以解决这个问题。
1.生成单个图表的html字符串

private static String getSingleImageHtml(String title,List<String> headTitle,List<List<String>> contentArray){
         //String html = "<!DOCTYPE html><html><body style=\"width:570px;\">";
         String html = "<table border=\"1\" style=\"border-collapse:collapse;width:570px;border:1px solid black;background: white;\" cellpadding=\"0\" cellspacing=\"0\">";

         html+="<thead>";
         html+="<tr ><th colspan=\"4\" style=\"text-align: center;width: 570px;height:40px;font-size: 22px;\">"+title+"</th></tr>";
         html+="<tr>";
        for(int i = 0;i<4;i++){
            String thEle = "";
            thEle = "<th style=\"height:30px;width:"+(i == 2?"52%":"16%")+";text-align: center;margin:0;color: #ffffff;background:#0070c0;border:1px solid black;font-size: 20px;\">"+headTitle.get(i)+"</th>";
            html+=thEle;
        }
        html+="</tr>";
        html+="</thead>";

        html+="<tbody>";
        for(List<String> contents:contentArray){
            html+="<tr>";
            for(int j = 0;j<4;j++){
                String tdEle = "";
                tdEle = "<td style=\"height:30px;width:"+(j == 2?"52%":"16%")+";text-align: center;margin:0;border:1px solid black;font-size: 18px;\">"+contents.get(j)+"</td>";
                html+=tdEle;
            }
            html+="</tr>";
        }


        html+="</tbody>";
        html+="</table>";
        //html+="</body></html>";
        return html;
    }

2.拼接多个table,并生成图片,此处使用到第三方库html2image(下载地址:http://mvnrepository.com/search?q=html2image)

    public static String graphicsHtmlGeneration(List<List<List<String>>> allValue,List<String> titles,List<String[]> headers ,String receiver) throws Exception {
        int i = 0;
        String html = "";
        for(List<List<String>> list:allValue){
            String title = titles.get(i);
            List<String> headTitle = Arrays.asList(headers.get(i));
            html += getSingleImageHtml(title,headTitle,list);
            i++;
        }
        if(html != null && html.length()>0){
             HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
             imageGenerator.loadHtml(html);
                try {
                    // Thread.sleep(5000);
                    imageGenerator.getBufferedImage();
                    //Thread.sleep(8000);
                    String path = "1.png";
                    imageGenerator.saveAsImage(path);
                    return path;
                } catch (Exception e) {
                }               
        }
        return null;

    }

3.传递图表数据
public void initChartData(){
List

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值