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 相关文章推荐
CSS和JS标签style属性对照表(方便js开发的朋友)
Nov 11 Javascript
点击显示指定元素隐藏其他同辈元素的方法
Feb 19 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
javascript实现无法关闭的弹框
Nov 27 Javascript
JavaScript实现获取远程的html到当前页面中
Mar 26 Javascript
vue基于Element构建自定义树的示例代码
Sep 19 Javascript
js实现图片上传并预览功能
Aug 06 Javascript
vue首次赋值不触发watch的解决方法
Sep 11 Javascript
JavaScript使用Math.random()生成简单的验证码
Jan 21 Javascript
js+canvas实现画板功能
Sep 13 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
Nov 04 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无敌近乎加密方式!
2010/07/17 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
vue地区选择组件教程详解
2018/05/04 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python爬虫实现百度图片自动下载
2018/02/04 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
python获取地震信息 微信实时推送
2019/06/18 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
杭州联环马网络笔试题面试题
2013/08/04 面试题
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
阿里云日志过滤器配置日志服务
2022/04/09 Servers