Vue如何将页面导出成PDF文件


Posted in Javascript onAugust 17, 2020

本文实例为大家分享了Vue将页面导出成PDF文件的具体代码,供大家参考,具体内容如下

我在前端岗位上要实现个可视化图表页的PDF文件导出,在这里给大家分享下使用jsPDF和html2canvas包将Vue页面导出成PDF的方法。

1. 下载npm包

npm install html2canvas
npm install jspdf

2. 创建插件.js文件

Vue-cli项目的话是在./utils文件夹下,我在这里使用的nuxt框架,所以是在./plugins文件夹下。

import html2Canvas from 'html2canvas';
import JsPDF from 'jspdf';

export default {
 install (Vue, options) {
  Vue.prototype.getPdf = function () {
   var title = this.pdfTitle; // 导出的pdf文件名
   html2Canvas(document.querySelector(this.pdfSelector), { //导出的html元素
    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');
   })
  }
 }
}

上面的插件代码可以直接复制,然后在引用的Vue文件中填入自己的参数就可以了。

3. 修改引用页面

导出按钮调用getPdf方法,data填入参数。

<template>
 <div id="pdfPrint">
    <!-- 调用getPdf方法 -->
    <el-button @click="getPdf('#pdfPrint')">保存为PDF</el-button>
 </div>
</template>

<script>
export default {
 data() {
  return {
   // 填入导出的pdf文件名和html元素
   pdfTitle: '因子评价报告',
   pdfSelector: '#pdfPrint',
  }
 },

大概就是这样啦,非常地简单。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript跑马灯悬停放大效果实现代码
Dec 12 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
Nov 30 Javascript
Javascript节点关系实例分析
May 15 Javascript
Angularjs手动解析表达式($parse)
Oct 12 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
Nov 28 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
Oct 14 jQuery
JS实现点击链接切换显示隐藏内容的方法
Oct 19 Javascript
JS实现的找零张数最小问题示例
Nov 28 Javascript
JS实现常见的查找、排序、去重算法示例
May 21 Javascript
封装一下vue中的axios示例代码详解
Feb 16 Javascript
微信小程序scroll-view不能左右滑动问题的解决方法
Jul 09 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 #Javascript
javascript实现贪吃蛇游戏(娱乐版)
Aug 17 #Javascript
three.js着色器材质的内置变量示例详解
Aug 16 #Javascript
Angular进行简单单元测试的实现方法实例
Aug 16 #Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 #Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 #Javascript
Vue使用axios引起的后台session不同操作
Aug 14 #Javascript
You might like
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
php 空格,换行,跳格使用说明
2009/12/18 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
MySQL事务的隔离级别详情
2022/07/15 MySQL