Vue导出页面为PDF格式的实现思路


Posted in Javascript onJuly 31, 2018

通过网上的查阅以后,说一下思路.就是将页面转换成图片格式.然后通过图片的base64码.生成PDF..看了他们的文章,做了如下整理..

说起来很容易,那么具体怎么实现呢?

1 、我们要添加两个模块

第一个.将页面html转换成图片

npm install --save html2canvas

第二个.将图片生成pdf

npm install jspdf --save

2、定义全局函数..创建一个htmlToPdf.js文件在指定位置.我个人习惯放在('src/components/utils/htmlToPdf')

// 导出页面为PDF格式
import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'
export default{
 install (Vue, options) {
 Vue.prototype.getPdf = function () {
  var title = this.htmlTitle
  html2Canvas(document.querySelector('#pdfDom'), {
  allowTaint: true
  }).then(function (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
  let pageData = canvas.toDataURL('image/jpeg', 1.0)
  let PDF = new JsPDF('', 'pt', 'a4')
  if (leftHeight < pageHeight) {
   PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
  } else {
   while (leftHeight > 0) {
   PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
   leftHeight -= pageHeight
   position -= 841.89
   if (leftHeight > 0) {
    PDF.addPage()
   }
   }
  }
  PDF.save(title + '.pdf')
  }
  )
 }
 }
}

3、在main.js中使用我们定义的函数文件。

import htmlToPdf from '@/components/utils/htmlToPdf'
Vue.use(htmlToPdf)

4、在需要的导出的页面..调用我们的getPdf方法即可.

Html

<div class="row" id="pdfDom" style="padding-top: 55px;background-color:#fff;">
 //给自己需要导出的ui部分.定义id为"pdfDom".此部分将就是pdf显示的部分
</div>
<button type="button" class="btn btn-primary"v-on:click="getPdf()">导出PDF</button>

js

export default {
 data () {
  return {
  htmlTitle: '页面导出PDF文件名'
  }
 }
 }

总结

以上所述是小编给大家介绍的Vue导出页面为PDF格式的实现思路,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
Apr 15 Javascript
为jQuery添加Webkit的触摸的方法分享
Feb 02 Javascript
JavaScript的strict模式与with关键字介绍
Feb 08 Javascript
一个CSS+jQuery实现的放大缩小动画效果
Feb 19 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
jQuery简单实现MD5加密的方法
Mar 03 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
Mar 08 Javascript
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
Sep 28 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 Javascript
使用uni-app开发微信小程序的实现
Dec 13 Javascript
前端vue如何使用高德地图
Nov 05 Javascript
详解微信小程序实现WebSocket心跳重连
Jul 31 #Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 #Javascript
JS构造一个html文本内容成文件流形式发送到后台
Jul 31 #Javascript
vue导出html、word和pdf的实现代码
Jul 31 #Javascript
JavaScript函数节流和函数去抖知识点学习
Jul 31 #Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 #Javascript
微信网页授权并获取用户信息的方法
Jul 30 #Javascript
You might like
收音机术语解释
2021/03/01 无线电
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
php判断目录存在的简单方法
2019/09/26 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
js 获取input点选按钮的值的方法
2014/04/14 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
js实现表格数据搜索
2020/08/09 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
python端口扫描系统实现方法
2014/11/19 Python
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
内部类的定义、种类以及优点
2013/10/16 面试题
聘用意向书
2014/07/29 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript