Vue导出页面为PDF格式的实现思路


Posted in Javascript onJuly 31, 2018

通过网上的查阅以后,说一下思路.就是将页面转换成图片格式.然后通过图片的base64码.生成PDF..看了他们的文章,做了如下整理..

说起来很容易,那么具体怎么实现呢?

1 、我们要添加两个模块

第一个.将页面html转换成图片

npm install --save html2canvas

第二个.将图片生成pdf

npm install jspdf --save

2、定义全局函数..创建一个htmlToPdf.js文件在指定位置.我个人习惯放在('src/components/utils/htmlToPdf')

// 导出页面为PDF格式
import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'
export default{
 install (Vue, options) {
 Vue.prototype.getPdf = function () {
  var title = this.htmlTitle
  html2Canvas(document.querySelector('#pdfDom'), {
  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')
  }
  )
 }
 }
}

3、在main.js中使用我们定义的函数文件。

import htmlToPdf from '@/components/utils/htmlToPdf'
Vue.use(htmlToPdf)

4、在需要的导出的页面..调用我们的getPdf方法即可.

Html

<div class="row" id="pdfDom" style="padding-top: 55px;background-color:#fff;">
 //给自己需要导出的ui部分.定义id为"pdfDom".此部分将就是pdf显示的部分
</div>
<button type="button" class="btn btn-primary"v-on:click="getPdf()">导出PDF</button>

js

export default {
 data () {
  return {
  htmlTitle: '页面导出PDF文件名'
  }
 }
 }

总结

以上所述是小编给大家介绍的Vue导出页面为PDF格式的实现思路,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery中与toggleClass等价的程序段 以及未来学习的方向
Mar 18 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
如何编写高质量JS代码
Dec 28 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
Jan 12 Javascript
JS实现“隐藏与显示”功能(多种方法)
Nov 24 Javascript
JS实现div模块的截图并下载功能
Oct 17 Javascript
详解package.json版本号规则
Aug 01 Javascript
微信小程序实现分享商品海报功能
Sep 30 Javascript
深入详解JS函数的柯里化
Jun 09 Javascript
详解微信小程序实现WebSocket心跳重连
Jul 31 #Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 #Javascript
JS构造一个html文本内容成文件流形式发送到后台
Jul 31 #Javascript
vue导出html、word和pdf的实现代码
Jul 31 #Javascript
JavaScript函数节流和函数去抖知识点学习
Jul 31 #Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 #Javascript
微信网页授权并获取用户信息的方法
Jul 30 #Javascript
You might like
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
进一步了解Python中的XML 工具
2015/04/13 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
python简单商城购物车实例代码
2018/03/15 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
Python如何将函数值赋给变量
2020/04/28 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
小学生美德少年事迹材料
2014/08/24 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python