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 相关文章推荐
jQuery Autocomplete自动完成插件
Jul 17 Javascript
javascript垃圾收集机制与内存泄漏详细解析
Nov 11 Javascript
javascript操作referer详细解析
Mar 10 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
Apr 17 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
Jan 02 Javascript
jQuery源码解读之hasClass()方法分析
Feb 20 Javascript
javascript阻止事件冒泡和浏览器的默认行为
Jan 21 Javascript
如何让你的JS代码更好看易读
Dec 01 Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
Jun 01 Javascript
vue自动添加浏览器兼容前后缀操作
Aug 13 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
一个分页的论坛
2006/10/09 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
python查找第k小元素代码分享
2013/12/18 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
用Python实现读写锁的示例代码
2018/11/05 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
python读取各种文件数据方法解析
2018/12/29 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
三星美国官网:Samsung美国
2017/02/06 全球购物
中学优秀班主任事迹材料
2014/05/01 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
义诊活动总结
2015/02/04 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
美容院员工规章制度
2015/08/05 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server