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 使用手册(六)
Sep 23 Javascript
js 自定义个性下拉选择框示例
Aug 20 Javascript
javascript正则表达式基础知识入门
Apr 20 Javascript
javascript实现textarea中tab键的缩排处理方法
Jun 26 Javascript
javascript实现简单的ajax封装示例
Dec 28 Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
May 23 Javascript
Angularjs Promise实例详解
Mar 15 Javascript
原生JS进行前后端同构
Apr 22 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
Jan 08 Javascript
Vue的编码技巧与规范使用详解
Aug 28 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
Apr 15 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+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python网络编程详解
2017/10/31 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python openpyxl使用方法详解
2019/07/18 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
上课看小说检讨书
2014/02/22 职场文书
政风行风评议整改方案
2014/09/15 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
趣味运动会口号
2015/12/24 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸