使用spring+flying sauser +velocity 导出文字+表格+echars图表为PDF

本文介绍如何使用Spring结合flying sauser和velocity库,将文字、表格和Echarts图表导出为PDF文件。通过示例代码display: exportPDFHelper,参照了数篇博客资源进行实现。
摘要由CSDN通过智能技术生成

使用flying sauser +velocity 导出文字+表格+echars图表为PDF

首先介绍一下项目背景,项目框架是spring,按照网页上成熟的样式把包含文字、表格、echarts的内容导出为PDF,考虑到网页上的样式是成熟的,所以使用flying sauser 来解析html和css,在做项目之前 看网上很多人都推荐用这个,但是实际用起来并不是很顺手啊,毕竟不是浏览器啊 ,貌似只能解析css2.0版本的,且很多地方解析出来的展现效果都跟浏览器不一样 比如说写一个table标签 如果你不给table加style样式的 表格根本不展示出来。原网页是vm模板,所以直接使用velocity engine ,动态数据使用一个map传进去,merge一下就得到最终的html+css了 交给flying sauser去解析就好了
大概说一下项目难点:
第一点,原网页不能完全照搬 ,一般情况下原网页上的css和js都是外联的,flying sauser是肯定不能解析的,js外联直接删掉,css想解析就拿出来直接贴在网页文件上,所有的js代码块都删掉。然后这样传进去展现出来的效果肯定跟浏览器不一样,很多地方错位啊 看着惨不忍睹,所以就开始对网页进行琐碎的修修改改了 就是调样式 不知道为啥,中文的左边如果没有非中文字符他就不显示,所以我在纯中文的地方都在左边加了一个  (空格)反正调样式这块真的很烦人,因为他完全不按常理出牌啊,同样的代码在浏览器那边能好好展示,他就不行。反正我在他这遇到了好多问题,中文不显示不占位啦导致格式错位,td里内容不自动换行,img标签传入base64编码他完全不认。。。。。。td内容不自动换行,一般解决方法就是加word-break,浏览器展现肯定没问题,可是flying sauser就不行啦,他只能解析css2.0的属性,word-break什么鬼 人家不知道啦
第二点,echarts图表的导出 echarts本身有个方法 getDataURL()这个方法能获得图表图片格式的base64编码,这个值可以传给img标签的src属性就能展示啦 但是上面说flying sauser他并不支持img标签的src这种写法 所以要对flying sauser做一些修改才能支持
代码display:先从前端页面开始。 
//导出
     <script>
     jQuery(function() {
     
     jQuery("#export").click(function(){
    

      jQuery("#a").val(myChart.getDataURL("png"));
      jQuery("#fundAccountFlowForm").attr("action","export/stockholder-hold.htm");
      jQuery("#fundAccountFlowForm").submit();

    });
    });
    </script>
    <td><input type="button" id="export" value="导出" class="but-61" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值