• vue项目中遇到的打印,以及处理重新排版后不显示echarts图片问题。


    1. 项目中用到的打印

    页面:

    css: 控制好宽度一般A4 我调试的是794px多了放不下,小了填不满。当时多页打印的时候,一定要控制好每一个页面内容显示的高度不要超过一个页面,当然根据自己项目来。

    由于我的项目是每一个页面固定一个页尾部,所以当显示的时候正常排版显示。但是一旦点击了打印预览需要修改这个区域的css让他固定在每一个页面的底部。

     

    js代码,点击打印后执行(如果右键点击打印就会乱,所以给一个打印预览按钮让用户直接点):打印前先给要打印区域排版,这样预览打印的时候就不会乱,只打印要打印的内容。然后延迟调用系统的打印预览后即便用户没有打印,页面已经排好版了 这个时候右键打印也是可以的了。

    print(){
            var that = this;
            $('.operatorBox').css({ //从新绘制这块区域让它固定在每一个页面底部
                'position':'fixed',
                'bottom':'15px'
            })//此方法仅限单页
            var div_print = document.getElementById('print-area');
            var newstr = div_print.innerHTML;
            var oldstr = document.body.innerHTML;
            document.body.innerHTML = newstr;
            // that.showCharts()
            // console.log(this.imgBase)
            // 吧charts图表弄成图片,在挨边替换空白图表
            /* Object.keys(this.imgBase).forEach(function(key){
                document.getElementById(key).innerHTML="<img style='100%' src="+that.imgBase[key]+">"
            });  */    
    
            setTimeout(function(){
                window.print(); 
                alert('如未打印,请右键选择打印!')
                // window.location.reload();
                // document.body.innerHTML = oldstr;
            },1000)
        }

    效果:

    取消打印后页面排版已经改变了:

    2. echarts打印,echarts如果是直接打印没问题,但是大多数情况是需要重新排列要打印的(就是不直接打印页面显示的,需要自定义打印内容),自定义打印的时候需要拿到要打印的html从新排版,但是这个时候拿不到echarts生成的图的,会显示空白。

    所以解决方案是利用echarts的转成图片功能,提前把canvas图表转成图片,记录下来然后在从新排列的时候从新替换,或者是当echarts生成图片的时候立马换掉(这样处理显示效果不好)。

    下面我的处理是把得到的图片全部按照echarts的id记录到一个对象里面,到时候在统一获取:

  • 相关阅读:
    JS经典面试题
    javascript数组(1) ——sort的工作原理及其他数组排序方法
    怎么去掉javascript 的Array的重复项
    Intellij IDEA运行Error ——Command line is too long
    angular-waring:global Angular与local Angular版本不一致问题
    idea(集成python)下载python插件失败
    PLSQL登录oracle显示无监听或协议适配器错误
    maven不能加载ojdbc6.jar的解决方法
    eclipse安装maven插件
    windows下gitbash安装教程
  • 原文地址:https://www.cnblogs.com/wangmaoling/p/10622941.html
Copyright © 2020-2023  润新知