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 相关文章推荐
js版本A*寻路算法
Dec 22 Javascript
jquery 插件学习(四)
Aug 06 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
Feb 22 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
Nov 26 Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
jQuery简单实现隐藏以及显示特效
Feb 26 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
Mar 02 Javascript
高性能JavaScript 重排与重绘(2)
Aug 11 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
Three.js学习之正交投影照相机
Aug 01 Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 Javascript
JavaScript字符和ASCII实现互相转换
Jun 03 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和ACCESS写聊天室(九)
2006/10/09 PHP
Zend 输出产生XML解析错误
2009/03/03 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
php计算十二星座的函数代码
2012/08/21 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
django2 快速安装指南分享
2018/01/05 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
如何对python的字典进行排序
2020/06/19 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
初三英语教学反思
2016/02/15 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android