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 相关文章推荐
node.js中的dns.getServers方法使用说明
Dec 08 Javascript
jquery中radio checked问题
Mar 16 Javascript
jQuery插件StickUp实现网页导航置顶
Apr 12 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
Jun 01 Javascript
微信小程序 本地存储及登录页面处理实例详解
Jan 11 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 Javascript
ES6新特性之变量和字符串用法示例
Apr 01 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
Dec 10 Javascript
Angular2 自定义表单验证器的实现方法
Dec 14 Javascript
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
JS 5种遍历对象的方式
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
PHP将XML转数组过程详解
2013/11/13 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
Javascript 解疑
2009/11/11 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
浅析Python中的join()方法的使用
2015/05/19 Python
python 性能优化方法小结
2017/03/31 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
浅析使用Python操作文件
2017/07/31 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
python实现图像外边界跟踪操作
2020/07/13 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
关于python中remove的一些坑小结
2021/01/04 Python
10个顶级Python实用库推荐
2021/03/04 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
感恩节活动方案
2014/01/27 职场文书
计算机系本科生求职信
2014/05/31 职场文书
个人租房协议书
2014/11/28 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
技能培训通讯稿
2015/07/18 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python