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 相关文章推荐
为超链接加上disabled后的故事
Dec 10 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
Feb 03 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
Aug 01 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 Javascript
Angularjs 自定义服务的三种方式(推荐)
Aug 02 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
Mar 02 Javascript
Vue之mixin全局的用法详解
Aug 22 Javascript
浅谈React Native 传参的几种方式(小结)
May 21 Javascript
微信小程序实现图片上传
May 23 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
Oct 29 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
Feb 04 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
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
什么是数据抽象
2016/11/26 面试题
最新计算机专业自荐信
2013/10/16 职场文书
财务部出纳岗位职责
2013/12/22 职场文书
施工班组长岗位职责
2014/01/05 职场文书
军训感想500字
2014/02/20 职场文书
交通事故协议书范文
2014/04/16 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
五四青年节活动总结
2015/02/10 职场文书
贪污检举信范文
2015/03/02 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
安全生产奖惩制度
2015/08/06 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers