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 插件 任意位置浮动固定层
Dec 25 Javascript
JavaScript 继承详解(四)
Jul 13 Javascript
JavaScript var声明变量背后的原理示例解析
Oct 12 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
May 10 Javascript
JavaScript判断是否是微信浏览器
Jun 13 Javascript
完美解决IE9浏览器出现的对象未定义问题
Sep 29 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
Vue中组件之间数据的传递的示例代码
Sep 08 Javascript
Webpack 4如何动态切割JS注入文件名详解
Jul 09 Javascript
js在HTML的三种引用方式详解
Aug 29 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之第九天
2006/10/09 PHP
php之XML转数组函数的详解
2013/06/07 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
javascript 日期常用的方法
2009/11/11 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
JavaScript中Function详解
2015/02/27 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
在Python的Django框架中加载模版的方法
2015/07/16 Python
python自带的http模块详解
2016/11/06 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
django ORM之values和annotate使用详解
2020/05/19 Python
Python turtle库的画笔控制说明
2020/06/28 Python
见习期自我鉴定
2014/01/31 职场文书
业务总经理岗位职责
2014/02/03 职场文书
师德师风个人反思
2014/04/28 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
2014年工会工作总结
2014/11/12 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
大学生实习证明
2015/06/16 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android
Python OpenCV之常用滤波器使用详解
2022/04/07 Python