关于前端使用JavaScript无法实现canvas打印问题的解决
当使用浏览器的打印功能window.print()无法打印网页上的canvas图像,但是可以通过转换canvas成一个图片的形式来实现canvas的打印。
解决方法
- getElementById获取canvas元素。
- 使用HTMLCanvasElement.toDataURL()的 toDataURL()方法获取canvas的base64码。
- 将获取的base64动态添加到img标签的src上。(html里的img标签不要写src属性)
/*generate Report模块打印方法说明
@method print
@param{数组} eNum 表示要打印的echarts图数量
@param{字符串} name 你要选区的dom节点id名称
参考 traffic measure和technical alarm界面
*/
print(eNum: number[], name: string) {
const echartCanvas = document.getElementsByTagName('canvas');
if (echartCanvas.length) {
eNum.forEach(item => {
document.getElementsByTagName('canvas')[item].setAttribute('id', 'echarts-canvas' + item);
this['canvas' + item] = document.getElementById('echarts-canvas' + item);
this['echartsImg' + item] = document.getElementById('echartsImg' + item);
this['dataURL' + item] = this['canvas' + item].toDataURL();
this['echartsImg' + item].src = this['dataURL' + item];
});
}
const printelemnt: any = document.getElementById(name);
const printHtml = printelemnt.innerHTML;
window.document.body.innerHTML = printHtml;
setTimeout(() => {
window.print();
window.location.reload();
}, 500);
}
参考链接: https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toDataURL
关于前端使用JavaScript无法实现canvas打印问题的解决的更多相关文章
- Python web前端 05 JavaScript
Python web前端 05 JavaScript 一.获取元素 1.初识JavaScript /* .. */ #这是多行注释 // #这是单行注释 #JavaScript是一种脚本语言,是一种动 ...
- 前端(3)JavaScript
前端(3)JavaScript JavaScript概述 1ECMAScript和JavaScript的关系: 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaS ...
- 第十一章 前端开发-JavaScript
第十一章 前端开发-JavaScript 11.3.1 js引入方式 行内样式 <p id="" class="" style="" ...
- 前端06 /JavaScript之BOM、DOM
前端06 /JavaScript 目录 前端06 /JavaScript 昨日内容回顾 js的引入 js的编程要求 变量 输入输出 基础数据类型 number string boolean null ...
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 互联网公司前端初级Javascript面试题
互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点)JavaScript是一种基于对象(Object)和事件驱 ...
- 第三篇:web之前端之JavaScript基础
前端之JavaScript基础 前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript ...
- 梦游前端,JavaScript兼容性
前端兼容问题出现的原因 何为操作系统?操作系统(Operating System)是管理和控制计算机硬件与软件资源的计算机程序.是的,任何的应用软件必须在操作系统的支持下运行. 大家会疑问?为什么我要 ...
- 纯JavaScript实现HTML5 Canvas六种特效滤镜
纯JavaScript实现HTML5 Canvas六种特效滤镜 小试牛刀,实现了六款简单常见HTML5 Canvas特效滤镜,并且封装成一个纯 JavaScript可调用的API文件gloomyfi ...
随机推荐
- 快速dns推荐
中国互联网络中心:1.2.4.8.210.2.4.8.101.226.4.6(电信及移动).123.125.81.6(联通) 阿里DNS:223.5.5.5.223.6.6.6 googleDNS:8 ...
- zip和rar文件的contentType
zip.rar.msi等文件使用Chrome提交的ContentType都为null,IE可以正确获取
- CCPC2019网络赛
2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛 A 题意:找到最小的正整数 C 使得 (A^C)&(B^C) 最小. \(A,B \le 10^9\) 签到题.这个C取 A& ...
- 添加头文件的报错failed to emit precompiled header 的解决办法
在buildsetting中的以下两个路径中添加对应的设置,重现编译即可解决,stackoverflow地址:点击 Solution:1 I added $(inherited) non-recurs ...
- 5.docker image (镜像)
1.image 是什么 是文件和 meta data 的集合 (root filesystem) 是分层的,并且每一层都可以添加改变删除文件,成为一个新的image 不同的image可以共享相同的la ...
- String--课后作业2
一.String.equals()的实现方法 对象(object类)的equals方法,有时候根据自己的需要,需要重写此方法(比如两个同类对象,如果其属性name相同就定为这两个对象是相同的,那么就需 ...
- ansible批量部署模块(二)
回顾:Ansible: 无需客户端程序 只要有SSH 模块化 ansible帮助工具ansible-doc 模块名ansible-doc 模块名 -s 列出该模块的所有选项ansible-doc -l ...
- python基础——认识(if __name__ == ‘__main__’:)
我们在写代码时,经常会用到这一句:if __name__ == '__main__',那么加这一句有什么用呢?实际上,它起到到了一个代码保护功能,它能够让别人在导入你写的模块情况下,无法看到和运行if ...
- Opencv笔记(十五)——图像金字塔
参考文献 目标 学习图像金字塔 学习函数cv2.pyrUp()和cv2.pyrDown() 原理 当我们需要将图像转换到另一个尺寸的时候, 有两种可能,一种是放大图像,另一种是缩小图像.尽管在Open ...
- Git log 中文乱码
以下三条命令搞定(系统是centos 7.4) git config --global i18n.commitencoding utf-8 git config --global i18n.logo ...