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 相关文章推荐
&amp;lt;script defer&amp;gt; defer 是什么意思
May 10 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
Jun 07 Javascript
拉动滚动条加载数据的jquery代码
May 03 Javascript
jquery批量控制form禁用的代码
Aug 06 Javascript
jquery判断元素的子元素是否存在的示例代码
Feb 04 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
AngularJS 异步解决实现方法
Jun 12 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
Aug 07 Javascript
为vue项目自动设置请求状态的配置方法
Jun 09 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
Oct 26 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数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
JS实现微信摇一摇原理解析
2017/07/22 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Python入门篇之编程习惯与特点
2014/10/17 Python
12步教你理解Python装饰器
2016/02/25 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
pygame实现简易飞机大战
2018/09/11 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
简历中自我评价范文3则
2013/12/14 职场文书
四风查摆剖析材料
2014/10/10 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
爱心捐助活动总结
2015/05/09 职场文书
2016年元旦致辞
2015/08/01 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis