注意事项

  • 如果导出的页面中设计到图片或者其他文件跨域文件,需要后端服务配合

安装依赖

  1. npm install html2Canvas --save
  2. npm install jspdf--save

封装Class

  1. // 导出页面为PDF格式
  2. import html2Canvas from 'html2canvas'
  3. import JsPDF from 'jspdf'
  4. import { Loading } from 'element-ui'
  5. let loading
  6. export default class PadDownloader {
  7. static install(Vue, options) {
  8. Vue.prototype.downloadPdf = function (options) {
  9. loading = Loading.service({
  10. lock: true,
  11. text: '正在下载文件...',
  12. background: 'rgba(0,0,0,.5)'
  13. })
  14. const title = options.title
  15. const content = document.querySelector('#' + options.selector)
  16. html2Canvas(content, {
  17. allowTaint: true,
  18. useCORS: true
  19. }).then(function (canvas) {
  20. let contentWidth = canvas.width
  21. let contentHeight = canvas.height
  22. let pageHeight = contentWidth / 592.28 * 841.89
  23. let leftHeight = contentHeight
  24. let position = 0
  25. let imgWidth = 595.28
  26. let imgHeight = 592.28 / contentWidth * contentHeight
  27. let pageData = canvas.toDataURL('image/jpeg', 1.0)
  28. let PDF = new JsPDF('', 'pt', 'a4')
  29. if (leftHeight < pageHeight) {
  30. PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
  31. } else {
  32. while (leftHeight > 0) {
  33. PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
  34. leftHeight -= pageHeight
  35. position -= 841.89
  36. if (leftHeight > 0) {
  37. PDF.addPage()
  38. }
  39. }
  40. }
  41. loading.close()
  42. PDF.save(title + '.pdf')
  43. })
  44. }
  45. }
  46. }

注册全局组件(main.js)

  1. // main.js
  2. Vue.use(PadDownloader)
  3. // 在其他的页面直接使用全局方法`downloadPdf `

使用 (vue 单文件组件)

  1. <div>
  2. <el-button
  3. type="primary"
  4. style="margin-left: 300px;"
  5. v-on:click="downloadPdf({title:'投标文件',selector:'pdf-container'})"
  6. >下载商务文件</el-button>
  7. </div>

Vue 页面导出成PDF文件的更多相关文章

  1. 【php导出pdf文件】php将html 导出成pdf文件(MPDF60),支持完美分页,注意是完美!!

    1.使用 MPDF60 包 2.防止中文乱码:修改MPDF/MPDF60/config.php中 $this->autoLangToFont = true; $this->autoScri ...

  2. vue将页面导出成pdf

    npm i jspdf-html2canvas prinOut(){ // 导出pdf let page = document.querySelector('.app-main'); // page ...

  3. 【jsPDF】jsPDF插件实现将html页面转换成PDF,并下载,支持分页

    1.目的:在前段是 jQuery库 或者 VUE库 或者两者混合库,将html 页面和数据 转换成PDF格式并下载,支持分页 1.项目背景: 对客户报修记录进行分类统计,并生成各种饼图.柱状图.线性图 ...

  4. Nodejs 中将html转换成pdf文件

    Nodejs 中将html转换成pdf文件,Nodejs Convert html into pdf 1. 下载phantomjs.exe,将该文件放在根目录 2. 编写pdf.js文件(在githu ...

  5. 把页面上的图表导出为pdf文件,分享一种请求下载文件的方法

    最近客户提出一个需求,就是把页面上的图表导出为pdf文件. 找了很多资料.终于有了点头绪.最主要是参考了HighCharts的做法.http://www.hcharts.cn/ 实现原理:把页面图表的 ...

  6. 页面直接导出为PDF文件,支持分页与页边距

    将WEB页面直接导出为pdf文件是经常会用到的一个功能,尤其是各种报表系统.总结了一下目前几种主流的做法: 在后端用代码生成pdf文件,比如iText一类: 在后端抓取页面并生成pdf文件,比如pha ...

  7. Django分析之导出为PDF文件

    最近在公司一直忙着做exe安装包,以及为程序添加新功能,好久没有继续来写关于Django的东西了….难得这个周末清闲,来了解了解Django的一些小功能也是极好的了~ 那今天就来看看在Django的视 ...

  8. SpringBoot 集成Swagger2自动生成文档和导出成静态文件

    目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagg ...

  9. Microsoft.Office.Interop.Excel的用法以及利用Microsoft.Office.Interop.Excel将web页面转成PDF

    1.常见用法           using Microsoft.Office.Interop.Excel; 1)新建一个Excel ApplicationClass ExcelApp = New A ...

随机推荐

  1. Host是什么?如何设置host文件?

    前言 前几天我在使用一些软件和网站时,出了一些小问题,然后我在网上搜解决问题的方法,搜着搜着就看到频繁出现的Host这个词.以前还没有注意到这个东西,因为总觉得它是系统文件,没必要去乱动:但是经过这次 ...

  2. OSCP Learning Notes - Exploit(2)

    Compiling an Exploit Exercise: samba exploit 1. Search and download the samba exploit source code fr ...

  3. 由一个计数器出发:关于vue使用独立js文件的问题

    最近有个vue项目要用ztree. 然后,我想把一些逻辑提出来作为公共的方法,放到独立的js文件里. ztreeTool.js import $ from 'jquery' export defaul ...

  4. vs code的使用(一) Format On Paste/Format On Save/ Format On Type

    很多经典的问题可以搜索出来,但是一些很小的问题网上却没有答案 (这是最令人发狂的,这么简单,网上居然连个相关的信息都没有给出) (就比如我想保存后自动格式化,但网上的大部分都是如何取消保存后自动格式化 ...

  5. 【mysql】- 索引简介篇

    简介 我们都知道mysql使用存储引擎的是InnoDB,InnoDB使用的索引的对应的数据结构是B+树 结构图: 如上图所示,我们实际用户记录是存放在B+树的最底层的节点上,这些节点也被称为叶子节点或 ...

  6. 利用python实现平稳时间序列的建模方式

    一.平稳序列建模步骤 假如某个观察值序列通过序列预处理可以判定为平稳非白噪声序列,就可以利用ARMA模型对该序列进行建模.建模的基本步骤如下: (1)求出该观察值序列的样本自相关系数(ACF)和样本偏 ...

  7. Error: no such table: device;的问题的解决,去掉表名device后面的分号;

    sqlite> .mode csvsqlite> .import device.txt device;Error: no such table: device;sqlite> .im ...

  8. text输入框

    https://blog.csdn.net/renhong20121314/article/details/51906555

  9. Web压测工具之Webbench和http_load

    Webbench简介 是知名的网站压力测试工具,能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况. webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每 ...

  10. 预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值

    PHP $_GET 变量 在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值. $_GET 变量 预定义的 $_GET 变量用于收集来自 ...