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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
Dec 21 Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
dreamweaver 安装Jquery智能提示
Apr 02 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
Apr 21 Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 Javascript
JavaScript调试工具汇总
Dec 23 Javascript
JavaScript动态加载样式表的方法
Mar 21 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
Aug 07 Javascript
深入浅析AngularJs模版与v-bind
Jul 06 Javascript
JavaScript中var的重要性实例分析
Jul 09 Javascript
JS实现简单的表格增删
Jan 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将数据导入到Foxmail的实现代码
2010/09/05 PHP
php获取字段名示例分享
2014/03/03 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
javascript 面向对象实战思想分享
2017/09/07 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
Java里面有没有全局变量?为什么?
2015/02/06 面试题
可靠的数据流传输TCP
2016/03/15 面试题
大门门卫岗位职责
2013/11/30 职场文书
2014的自我评价
2014/01/13 职场文书
捐书寄语赠言
2014/01/18 职场文书
《手指教学》反思
2014/02/14 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
酒店管理求职信范文
2014/04/06 职场文书
邀请函模板
2015/02/02 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python