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 相关文章推荐
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
Jquery为a标签的href赋值实现代码
May 03 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
May 05 Javascript
jQuery插件pagination实现分页特效
Apr 12 Javascript
基于JS实现PHP的sprintf函数实例
Nov 14 Javascript
JavaScript 对象字面量讲解
Jun 06 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
Vue.js组件tree实现省市多级联动
Dec 02 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
Jun 12 Javascript
微信小程序之自定义组件的实现代码(附源码)
Aug 02 Javascript
深入了解JavaScript 的 WebAssembly
Jun 15 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 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
JS实现php的伪分页
2008/05/25 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
vue + element-ui的分页问题实现
2018/12/17 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
React实现全选功能
2020/08/25 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
Django单元测试工具test client使用详解
2019/08/02 Python
Python学习之os模块及用法
2020/06/03 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
财务部经理岗位职责
2014/02/03 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis