Vue网页html转换PDF(最低兼容ie10)的思路详解

作者:冷藏封 时间:2024-06-07 15:25:12 

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)的思路详解网站的支持!

来源:http://www.cnblogs.com/forever0608/archive/2017/08/23/7419422.html

标签:vue,html,PDF
0
投稿

猜你喜欢

  • 搜索结果页(SERP):个性化如何影响用户行为?

    2009-07-22 21:00:00
  • Golang精编49面试题汇总(选择题)

    2023-07-12 23:49:44
  • PHP中非常有用却鲜有人知的函数集锦

    2023-11-24 14:29:47
  • python异常触发及自定义异常类解析

    2023-05-02 18:17:01
  • Python3单行定义多个变量或赋值方法

    2022-03-22 17:10:53
  • Python数据挖掘Pandas详解

    2021-08-04 13:11:44
  • SQL server 2008 数据安全(备份和恢复数据库)

    2024-01-17 00:18:20
  • Python logging模块异步线程写日志实现过程解析

    2023-07-29 05:05:03
  • mySQL中in查询与exists查询的区别小结

    2024-01-20 22:26:00
  • python 脚本生成随机 字母 + 数字密码功能

    2021-11-27 23:37:10
  • 彻底搞懂MySQL存储过程和函数

    2024-01-24 10:48:52
  • python中如何使用函数改变list

    2022-06-04 13:38:38
  • 协同开发巧用gitignore中间件避免网络请求携带登录信息

    2022-10-24 13:20:00
  • 使用JavaScript实现网页版Pongo设计思路及源代码分享

    2024-04-10 10:48:07
  • SQL如何使用正则表达式对数据进行过滤

    2024-01-26 23:15:05
  • 升级SQL Server 2008数据库引擎

    2009-03-25 12:58:00
  • 英文版面设计的8个禁忌

    2009-10-14 20:42:00
  • 基于Python制作一个简单的文章搜索工具

    2021-07-08 02:16:28
  • 设计模式学习笔记之 - 简单工厂模式

    2009-03-11 13:38:00
  • js实现网页加载loading的显示

    2007-11-06 12:11:00
  • asp之家 网络编程 m.aspxhome.com