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 相关文章推荐
js 发个判断字符串是否为符合标准的函数
Apr 27 Javascript
使用js显示当前时间示例
Mar 02 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
Aug 15 Javascript
js仿支付宝多方框输入支付密码效果
Sep 27 Javascript
详解js的作用域、预解析机制
Feb 05 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
Jquery实现无缝向上循环滚动列表的特效
Feb 13 jQuery
详解微信小程序的不同函数调用的几种方法
May 08 Javascript
对Layer UI 模块化的用法详解
Sep 26 Javascript
JavaScript 反射学习技巧
Oct 16 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_values() 获取数组元素值的函数与方法
2011/10/30 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
jquery图片切换插件
2015/03/16 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
Python下的twisted框架入门指引
2015/04/15 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
后勤主管工作职责
2013/12/07 职场文书