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 相关文章推荐
dojo随手记 gird组件引用
Feb 24 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 Javascript
js数组实现权重概率分配
Sep 12 Javascript
讲解vue-router之命名路由和命名视图
May 28 Javascript
微信小程序用户信息encryptedData详解
Aug 24 Javascript
移动端如何用下拉刷新的方式实现上拉加载
Dec 10 Javascript
详解VUE里子组件如何获取父组件动态变化的值
Dec 26 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
Angular CLI 使用教程指南参考小结
Apr 10 Javascript
百度小程序之间的页面通信过程详解
Jul 18 Javascript
js实现简单抽奖功能
Nov 24 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二维数组转成字符串示例
2014/02/17 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
ext jquery 简单比较
2010/04/07 Javascript
Extjs中常用表单介绍与应用
2010/06/07 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
python实现通过shelve修改对象实例
2014/09/26 Python
python pygame实现2048游戏
2018/11/20 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
Python matplotlib可视化实例解析
2020/06/01 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
python -v 报错问题的解决方法
2020/09/15 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
什么是数组名
2012/05/10 面试题
党支部创先争优承诺书
2014/08/30 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
全国助残日活动总结
2015/05/11 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
Python函数对象与闭包函数
2022/04/13 Python
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS