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 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
Jquery 选中表格一列并对表格排序实现原理
Dec 15 Javascript
jQuery实现多按钮单击变色
Nov 27 Javascript
node.js中的fs.lchown方法使用说明
Dec 16 Javascript
js实现感应鼠标图片透明度变化的方法
Feb 20 Javascript
jQuery使用addClass()方法给元素添加多个class样式
Mar 26 Javascript
探讨跨域请求资源的几种方式(总结)
Dec 02 Javascript
node.js中express中间件body-parser的介绍与用法详解
May 23 Javascript
深入理解Node.js中通用基础设计模式
Sep 19 Javascript
详解vue项目首页加载速度优化
Oct 18 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
layer.open回调获取弹出层参数的实现方法
Sep 10 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 学习路线与时间表
2010/02/21 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
AngularJS语法详解
2015/01/23 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
django 多数据库配置教程
2018/05/30 Python
python skimage 连通性区域检测方法
2018/06/21 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
python新手学习使用库
2020/06/11 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
python3处理word文档实例分析
2020/12/01 Python
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
生物制药自我鉴定
2014/01/25 职场文书
初中班主任寄语
2014/04/04 职场文书
双拥工作宣传标语
2014/06/26 职场文书
业务员辞职信范文
2015/03/02 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server