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 相关文章推荐
js 浮动层菜单收藏
Jan 16 Javascript
js简单实现HTML标签Select联动带跳转
Oct 23 Javascript
javascript对JSON数据排序的3个例子
Apr 12 Javascript
JavaScript学习笔记之内置对象
Jan 22 Javascript
JavaScript的removeChild()函数用法详解
Dec 27 Javascript
javascript日期比较方法实例分析
Jun 17 Javascript
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
webpack实用小功能介绍
Jan 02 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
Apr 26 Javascript
浅谈Webpack打包优化技巧
Jun 12 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
Sep 26 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函数解决SQL injection
2006/12/09 PHP
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
php创建session的方法实例详解
2015/01/27 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
python+os根据文件名自动生成文本
2019/03/21 Python
Pyqt5实现英文学习词典
2019/06/24 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
Python遍历字典方式就实例详解
2019/12/28 Python
pytorch标签转onehot形式实例
2020/01/02 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
小学生安全保证书
2014/02/01 职场文书
个人贷款承诺书
2014/03/28 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
2019年教师入党申请书
2019/06/27 职场文书
Javascript webpack动态import
2022/04/19 Javascript