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 判断checkbox是否选中的操作方法
Nov 09 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
Sep 27 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
Oct 24 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
微信小程序中换行空格(多个空格)写法详解
Jul 10 Javascript
js如何获取图片url的Blob值并预览示例代码
Mar 07 Javascript
微信小程序顶部导航栏可滑动并选中放大
Dec 05 Javascript
解决vue自定义指令导致的内存泄漏问题
Aug 04 Javascript
关于JavaScript数组去重的一些理解汇总
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 escape URL编码
2008/12/10 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
农历与西历对照
2006/09/06 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
使用js画图之饼图
2015/01/12 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python的函数的一些高阶特性
2015/04/27 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
Django添加feeds功能的示例
2018/08/07 Python
Python3 max()函数基础用法
2019/02/19 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
Android interview questions
2016/12/25 面试题
三项教育活动实施方案
2014/03/30 职场文书
班级读书活动总结
2014/06/30 职场文书
2014年资料员工作总结
2014/11/18 职场文书
储备店长岗位职责
2015/04/14 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书