Vue网页html转换PDF(最低兼容ie10)的思路详解


Posted in Javascript onAugust 24, 2017

HTML转PDF:

1.页面底层实现——Vue:最低兼容ie10

2.实现思路:

1> 使用html2canvas.js将网页转换为图片

2> 使用jsPdf.debug.js将canvas生成的图片转换为pdf文件

具体实现:

要这样实现首先要引入两个插件:

html2canvas.js

jsPdf.debug.js

注:

因为ie10在canvas截图时候会出现部分样式丢失的情况,所以在代码中有部分修改了页面的样式

所以建议在做截图的时候,将页面代码复制一份到隐藏域,在隐藏域里面做修改,这样就不会修改页面原有样式了

如果大家有更好的方法,欢迎提议

下面上代码:

<script type="text/ecmascript-6">
import co from 'co'
import html2Canvas from '../html2canvas'
import JsPDF from '../jsPdf.debug'
export default {
 title: '用户信息',
 data () {
  return {}
 },
 methods: {
 // 核心代码
  printOut () {


// 获取需要打印的区域,以div为单位,此处使用的是vue的选择器
   let pdfDom = document.querySelector('#pdf-wrap')


// 因为在ie10下,会出现input样式丢失的情况,所以在此处清楚input的标签的边框
   let arrnode = pdfDom.querySelectorAll('input')
   for (var i = 0; i < arrnode.length; i++) {
    arrnode[i].style.border = 'hidden'
   }


// 设置背景色
   pdfDom.style.background = '#FFFFFF'
   let _this = this
   html2Canvas(pdfDom, {
    allowTaint: true, taintTest: false,
    onrendered: function (canvas) {



// 开始canvas截图



// 开始准备工作
     let contentWidth = canvas.width
     let contentHeight = canvas.height
     let pageHeight = contentWidth / 592.28 * 841.89
     let leftHeight = contentHeight
     let position = 0
     let imgWidth = 595.28
     let imgHeight = 592.28 / contentWidth * contentHeight



// 此处图片格式可以是PNG,也可是JPEG,注意:需要考虑Browser支持的图片格式
     let pageData = canvas.toDataURL('image/PNG', 1)
     pdfDom.style.display = 'none'



// 开始将图片转换为PDF



// 设置纸张大小,方向
     let PDF = new JsPDF('', 'pt', 'a4')
     if (leftHeight < pageHeight) {
      PDF.addImage(pageData, 'PNG', 0, 0, imgWidth, imgHeight)
     } else {
      while (leftHeight > 0) {
       PDF.addImage(pageData, 'PNG', 0, position, imgWidth, imgHeight)
       leftHeight -= pageHeight
       position -= 841.89
       if (leftHeight > 0) {
        PDF.addPage()
       }
      }
     }



// 保存PDF
     PDF.save(_this.userInfo.card_id + '-' + _this.userInfo.user_name + '.pdf')
    }
   })
   html2Canvas()
  }
 },
 ready () {
 }
}
</script>

总结

以上所述是小编给大家介绍的Vue网页html转换PDF(最低兼容ie10)的思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
详解JavaScript函数绑定
Aug 18 Javascript
JavaScript判断密码强度(自写代码)
Sep 06 Javascript
js特殊字符转义介绍
Nov 05 Javascript
node.js中的fs.rename方法使用说明
Dec 16 Javascript
详细解读JavaScript编程中的Promise使用
Jul 27 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
关于HTTP传输中gzip压缩的秘密探索分析
Jan 12 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
May 30 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 Javascript
JS实现小米轮播图
Sep 21 Javascript
javascript实现固定侧边栏
Feb 09 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 #Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 #Javascript
angular2路由切换改变页面title的示例代码
Aug 23 #Javascript
通俗解释JavaScript正则表达式快速记忆
Aug 23 #Javascript
bootstrap fileinput实现文件上传功能
Aug 23 #Javascript
jQuery Position方法使用和兼容性
Aug 23 #jQuery
详解EasyUi控件中的Datagrid
Aug 23 #Javascript
You might like
php SQL之where语句生成器
2009/03/24 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
PDO::inTransaction讲解
2019/01/28 PHP
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
Python中变量交换的例子
2014/08/25 Python
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
Python绘图实现显示中文
2019/12/04 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
Numpy 多维数据数组的实现
2020/06/18 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
机械设计及其自动化专业推荐信
2013/10/31 职场文书
高三家长寄语
2014/04/03 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
Pandas 稀疏数据结构的实现
2021/07/25 Python
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS