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 this 和 $(this) 的区别
Aug 23 Javascript
Jquery判断IE6等浏览器的代码
Apr 05 Javascript
JavaScript设计模式之外观模式介绍
Dec 28 Javascript
自己动手写的jquery分页控件(非常简单实用)
Oct 28 Javascript
node+experss实现爬取电影天堂爬虫
Nov 20 Javascript
JS多文件上传的实例代码
Jan 11 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
Mar 15 Javascript
Vue实现拖放排序功能的实例代码
Jul 08 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
JavaScript定时器使用方法详解
Mar 26 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
Nov 10 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编写PDF文档生成器
2006/10/09 PHP
超级简单的发送邮件程序
2006/10/09 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
js select option对象小结
2013/12/20 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
搬家公司的创业计划书
2014/01/01 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
2014年党总支工作总结
2014/12/18 职场文书
发布会邀请函
2015/01/31 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
排查MySQL生产环境索引没有效果
2022/04/11 MySQL