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 相关文章推荐
window.showModalDialog使用手册
Jan 11 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
Jun 18 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
jQuery on()绑定动态元素出现的问题小结
Feb 19 Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
Nov 09 Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 Javascript
JavaScript实现重力下落与弹性效果的方法分析
Dec 20 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
支付宝小程序tabbar底部导航
Nov 06 Javascript
浅谈目前可以使用ES10的5个新特性
Jun 25 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+dbfile开发小型留言本
2006/10/09 PHP
?算你??的 PHP 程式大小
2006/12/06 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
DOM事件探秘篇
2017/02/15 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
详解Python的Django框架中的模版相关知识
2015/07/15 Python
python抽取指定url页面的title方法
2018/05/11 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
python中嵌套函数的实操步骤
2019/02/27 Python
python基于SMTP协议发送邮件
2019/05/31 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Python中的全局变量如何理解
2020/06/04 Python
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
《灯光》教学反思
2014/02/08 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
物理教学随笔感言
2014/02/22 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫