一: 安装插件

// 第一个.将页面html转换成图片
npm install --save html2canvas
// 第二个.将图片生成pdf
npm install jspdf --save 

二: 定义全局函数,创建一个htmlToPdf.js文件在指定位置.例如放在(‘src/utils/html2pdf’)

// 导出页面为PDF格式
import html2canvas from "html2canvas"
import JSPDF from "jspdf"
export default {install (Vue, options) {Vue.prototype.ExportSavePdf = function (htmlTitle, currentTime) {var element = document.getElementById("pdfCentent")html2canvas(element, {logging: false}).then(function (canvas) {var pdf = new JSPDF("p", "mm", "a4") // A4纸,纵向var ctx = canvas.getContext("2d")var a4w = 170; var a4h = 257 // A4大小,210mm x 297mm,四边各保留20mm的边距,显示区域170x257var imgHeight = Math.floor(a4h * canvas.width / a4w) // 按A4显示比例换算一页图像的像素高度var renderedHeight = 0while (renderedHeight < canvas.height) {var page = document.createElement("canvas")page.width = canvas.widthpage.height = Math.min(imgHeight, canvas.height - renderedHeight)// 可能内容不足一页// 用getImageData剪裁指定区域,并画到前面创建的canvas对象中page.getContext("2d").putImageData(ctx.getImageData(0, renderedHeight, canvas.width, Math.min(imgHeight, canvas.height - renderedHeight)), 0, 0)pdf.addImage(page.toDataURL("image/jpeg", 1.0), "JPEG", 10, 10, a4w, Math.min(a4h, a4w * page.height / page.width)) // 添加图像到页面,保留10mm边距renderedHeight += imgHeightif (renderedHeight < canvas.height) { pdf.addPage() }// 如果后面还有内容,添加一个空页// delete page;}pdf.save(htmlTitle + currentTime)})}}
}

三:在main.js中引入,全局引用

import htmlToPdf from "../src/utils/html2pdf"
Vue.use(htmlToPdf)

四:在用到的组件 .vue中使用

<div id="pdfCentent">需要生成pdf的内容
</div><button  @click="ExportSavePdf(htmlTitle,nowTime)">导出PDF</button>
export default {data () {return {htmlTitle: "PDF名称",nowTime: "",}}}

第二种, 使用插件 vue-print-nb

https://www.npmjs.com/package/vue-print-nb

一: 安装

npm install vue-print-nb --save

二:在main.js中引用

import Print from 'vue-print-nb'Vue.use(Print);

三:组件中使用

 <button v-print="printObj">Print local range</button><div id="printMe" style="background:red;"><p>葫芦娃,葫芦娃</p><p>一根藤上七朵花 </p><p>小小树藤是我家 啦啦啦啦 </p><p>叮当当咚咚当当 浇不大</p><p> 叮当当咚咚当当 是我家</p><p> 啦啦啦啦</p><p>...</p></div>

export default {data() {return {printObj: {id: "printMe",popTitle: 'good print',extraCss: 'https://www.google.com,https://www.google.com',extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>'}};}
}

vue 页面生成pdf并下载 vue页面转PDF相关推荐

  1. Vue 脚手架生成的项目结构分析||Vue 脚手架的自定义配置

    Vue 脚手架生成的项目结构分析 Vue 脚手架的自定义配置

  2. Springboot访问jsp页面但是却变成下载该页面

    Springboot访问jsp页面但是却变成下载该页面 缺少jsp解析的依赖,加上即可 <!--jsp解析器依赖--><dependency><groupId>or ...

  3. vue.js中文官网下载vue.js失败了?

    访问vue官网 https://v2.cn.vuejs.org/v2/guide/installation.html下载vue.js,页面直接报错404,只需要切换到英文版,重新下载即可成功. 或者直 ...

  4. 前端将页面生成word并下载

    jquery.wordexport.js  源码 if (typeof jQuery !== "undefined" && typeof saveAs !== &q ...

  5. java pdf插件下载_免费java pdf控件

    云原生的概念和理论体系非常的完备,but talk is cheap , show me the code ! 但是作为一名程序员,能动手的咱绝对不多BB,虽然talk并不cheap , 能跟不同层次 ...

  6. vue 页面转pdf 并下载

    最近需要做一个下载vue页面为pdf格式的功能,网上方案有很多,也尝试了其他方案,最终采用的方案 流程就是点击下载报告按钮,则请求后端一个接口,例如接口地址为example.cn/file/downl ...

  7. (vue基础试炼_01)使用vue.js 快速入门hello world

    文章目录 一.需求案例 二.案例实现 2.1. 原始js写法 2.2. 怎样使用vue.js ? 2.3. 使用vue.js 写法 三.案例vue简述? 四.案例趣味延伸 五.表达值作用及嘱咐语 一. ...

  8. vue项目将页面生成pdf

    项目场景: vue项目运行在移动端(企业微信聊天栏工具.企业微信浏览器.微信浏览器.外部浏览器),PC端(微信浏览器.其他厂商浏览器),利用html2canvas将页面生成图片文件,并采用jspdf将 ...

  9. vue页面生成pdf 完整demo 及其踩得坑

    bug 导出图片不显示这里是图片跨域了 这里一般情况下都是用的html2canvas自带的方法 useCORS: true,(ps): 一般情况下不行看脸也有说是阿里的图片上传限制了只要去后置设置下请 ...

最新文章

  1. 网易Q2季报图解:游戏营收重回百亿 净利同比降29%
  2. 消息已读未读的模型设计_阿里云技术专家分享:现代 IM 系统中消息推送和存储架构的实现...
  3. r语言 xmlto html,使用R语言将XML转换为CSV(示例代码)
  4. Python3 协程 + 正则 批量爬取斗鱼美女图片
  5. Android应用被强制停止后无法接受广播解决方案
  6. snmp+mrtg监控-note
  7. 记一次360面试总结(Android)
  8. Layered Architecture 分层架构(完整翻译)
  9. 007 定位明文封包call
  10. 中国最美的100首情诗
  11. 什么是绝对URL、相对URL
  12. WiFi共享大师后无法上网
  13. vue 引入 360度图片旋转插件 SpriteSpin.js
  14. 鸿蒙系统王维,王维这句诗有多美?先被欧阳修“偷”了,后被苏轼“偷”了
  15. 2023二建学天案例突破101问
  16. 计算机内存与外存有什么特点,为什么计算机要分内存与外存,内存与外存各有什么特点?...
  17. (转)任正非对新员工的寄语:烧不死的就是凤凰
  18. android文字转语音文件格式,Android文字转语音
  19. 无鸭不过秋,这样吃鸭润燥解乏!
  20. oracle数据字典损坏恢复,PRM-DUL成功案例:恢复了700GB损坏严重的Oracle数据库

热门文章

  1. 互联网公司面试经历(转载)
  2. python3爬虫初探(七)使用MySQL
  3. Spring MVC 解读——@Autowired、@Controller、@Service从原理层面来分析
  4. c++静态变量的生存期
  5. 史上最大规模高校分析技术大赛是如何诞生的
  6. apache ab压力测试报错apr_socket_recv
  7. 又拍云张聪谈安全、HTTPS、自定义、CDN的未来趋势
  8. SFB 项目经验-02-共存迁移-Lync 2013-TO-SFB 2015-规划02
  9. webservice 出现No service was found
  10. 一步一步学Silverlight 2系列(6):键盘事件处理