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各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
拖动table标题实现改变td的大小(css+js代码)
Apr 16 Javascript
如何判断微信内置浏览器(通过User Agent实现)
Sep 01 Javascript
JavaScript学习笔记之内置对象
Jan 22 Javascript
Js控制滑轮左右滑动实例
Feb 13 Javascript
JavaScript采用递归算法计算阶乘实例
Aug 04 Javascript
第四章之BootStrap表单与图片
Apr 25 Javascript
js实现简易聊天对话框
Aug 17 Javascript
小程序实现图片预览裁剪插件
Nov 22 Javascript
手机浏览器唤起微信分享(JS)
Oct 11 Javascript
vue监听键盘事件的相关总结
Jan 29 Vue.js
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
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
linux下为php添加curl扩展的方法
2011/07/29 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
PHP防盗链代码实例
2014/08/27 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
简明 Python 基础学习教程
2007/02/08 Python
python实现ip查询示例
2014/03/26 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
python迭代dict的key和value的方法
2018/07/06 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
简历的自荐信
2013/12/19 职场文书
家长学校实施方案
2014/03/15 职场文书
资产运营委托书范本
2014/10/16 职场文书