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 相关文章推荐
比较简单的一个符合web标准的JS调用flash方法
Nov 29 Javascript
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
js弹出模式对话框,并接收回传值的方法
Mar 12 Javascript
jquery图片放大功能简单实现
Aug 01 Javascript
jQuery实现点击该行即可删除HTML表格行
Oct 17 Javascript
基于jQuery实现仿淘宝套餐选择插件
Mar 04 Javascript
利用纯JS实现像素逐渐显示的方法示例
Aug 14 Javascript
React Native 搭建开发环境的方法步骤
Oct 30 Javascript
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 Javascript
jQuery 移除事件的方法
Jun 20 jQuery
vue表单验证之禁止input输入框输入空格
Dec 03 Vue.js
详解微信小程序实现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 一个页面执行时间类代码
2010/03/05 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
python实现整数的二进制循环移位
2019/03/08 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
C语言编程练习
2012/04/02 面试题
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
《兰亭集序》教学反思
2014/02/11 职场文书
大专生找工作自荐书
2014/06/10 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
乒乓球比赛通知
2015/04/27 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
Python 语言实现六大查找算法
2021/06/30 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫