1.安装插件html2canvas+jspdf

npm i -s html2canvas jspdf

2.在src下新建util文件夹并新建htmlToPdf.js,添加如下代码

import html2canvas from "html2canvas";
import JsPDF from "jspdf";/*** @param  ele          要生成 pdf 的DOM元素(容器)* @param  padfName     PDF文件生成后的文件名字* */export function downloadPDF(ele, pdfName) {window.scrollTo(0, 0);let eleW = ele.offsetWidth; // 获得该容器的宽let eleH = ele.offsetHeight; // 获得该容器的高let eleOffsetTop = ele.offsetTop; // 获得该容器到文档顶部的距离let eleOffsetLeft = ele.offsetLeft; // 获得该容器到文档最左的距离var canvas = document.createElement("canvas");var abs = 0;let win_in =document.documentElement.clientWidth || document.body.clientWidth; // 获得当前可视窗口的宽度(不包含滚动条)let win_out = window.innerWidth; // 获得当前窗口的宽度(包含滚动条)if (win_out > win_in) {// abs = (win_o - win_i)/2;    // 获得滚动条长度的一半abs = (win_out - win_in) / 2; // 获得滚动条宽度的一半}canvas.width = eleW * 2; // 将画布宽&&高放大两倍canvas.height = eleH * 2;var context = canvas.getContext("2d");context.scale(2, 2);context.translate(-eleOffsetLeft - abs, -eleOffsetTop);// 这里默认横向没有滚动条的情况,因为offset.left(),有无滚动条的时候存在差值,因此// translate 的时候,要把这个差值去掉html2canvas(ele, {dpi: 400,scale: 4,//越大越清晰// allowTaint: true,  //允许 canvas 污染, allowTaint参数要去掉,否则是无法通过toDataURL导出canvas数据的useCORS: true, //允许canvas画布内 可以跨域请求外部链接图片, 允许跨域请求。}).then((canvas) => {var contentWidth = canvas.width;var contentHeight = canvas.height;//一页pdf显示html页面生成的canvas高度;var pageHeight = (contentWidth / 595.28) * 841.89;//未生成pdf的html页面高度var leftHeight = contentHeight;//页面偏移var position = 0;//a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高var imgWidth = 595.28;var imgHeight = (595.28 / contentWidth) * contentHeight;var pageData = canvas.toDataURL("image/jpeg", 1.0);var pdf = new JsPDF("", "pt", "a4");//有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)//当内容未超过pdf一页显示的范围,无需分页if (leftHeight < pageHeight) {//在pdf.addImage(pageData, 'JPEG', 左,上,宽度,高度)设置在pdf中显示;pdf.addImage(pageData, "JPEG", 0, 0, imgWidth, imgHeight);} else {// 分页while (leftHeight > 10) {// console.log(leftHeight)pdf.addImage(pageData, "JPEG", 0, position, imgWidth, imgHeight);leftHeight -= pageHeight;position -= 871.89;//避免添加空白页if (leftHeight > 10) {pdf.addPage();}}}//可动态生成pdf.save(pdfName);});
}

3.在main.js中添加如下代码

//页面导出pdf
import {downloadPDF } from "@/util/htmlToPdf"
Vue.prototype.$downloadPDF = downloadPDF

4.需要下载的页面method中添加

// 导出为pdfExportSavePdf() {this.$downloadPDF(document.querySelector("#pdfCentent"), "文件名称");},


以上。

vue页面内容保存为PDF相关推荐

  1. Vue导出当前页面内容为图片/PDF

    1.vue页面导出为pdf文件 step1:安装依赖 npm install jspdf --save step2:创建工具类vueToPdf.js // 导出页面为PDF格式 import html ...

  2. 利用h5Blob将页面内容保存为本地文件

    知识点: <1>.a的download 属性规定被下载的超链接目标,download属性可以设置一个值来规定下载文件的名称,(.img, .pdf, .txt, .html, 等等). & ...

  3. 如何打印CSDN博客?将CSDN博客内容保存为PDF然后下载

    进入文章页面 按F12 点击Console 输入下面代码,然后按回车 (function(){$("#side").remove(); $("#comment_title ...

  4. vue 前端png转pdf_Vue前端HTML保存为PDF的两种常用方式 「干货分享」

    Vue前端HTML保存为PDF常用方式有两种.使用html2Canvas和JsPDF库,转化为图片后保存PDF. 调用浏览器window.print(),然后手动保存为PDF. 第一种 优点没有预览点 ...

  5. vue 使用html2canvas和jspdf插件将网页保存为pdf

    最近有如此需求,需要将页面部分内容保存为pdf文件,并下载.最终使用html2canvas和jspdf组合. 思路很简单,先用html2canvas将指定容器的html绘制成canvas,再用jspd ...

  6. 新窗口打开vue项目中的静态pdf文件,并做权限控制

    问题:公司系统做安全测试,其中一个问题是没有登录的情况下,直接访问 "项目地址/operate.pdf "此地址,会展示pdf文件. 描述:点击系统内的一个按钮会打开新窗口展示系统 ...

  7. vue页面截图用html2canvas截图不完整有滚动条+有echarts图表时完整截图——截图保存为图片或pdf

    问题 最开始需要做一个网页的截图,结果发现有滚动条怎么都截取不成功,然后各种百度到了一个办法,就是复制那个节点到body,然后在截取那个复制的节点,小页面实验了一下,成功了好开心,代码是这样的.但是, ...

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

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

  9. Vue页面转PDF(已解决分辨率、页边距问题)

    首先我们需要安装两个插件 npm install --save html2canvas // 页面转图片 npm install jspdf --save // 图片转pdf 然后新建一个js文件放到 ...

最新文章

  1. 客户端如何连接 DataSnap Server 调用服务的方法
  2. 理解Meta Learning 元学习,这篇文章就够了!
  3. 使用fswatch工具进行golang的热编译
  4. WPF线性渐变画刷应用之——炫彩线条
  5. WindowsPhone设置启动欢迎页面
  6. SAP KKBC_ORD报表中Plan和Target的区别
  7. Boost:双图bimap与Boost xpressive的测试程序
  8. node多版本管理--nvmw
  9. 随机迷宫c语言实验报告,[原创]递归随机迷宫生成算法详解
  10. java选择排序代码_Java排序算法总结之选择排序
  11. 调用wsdl的接口-用axis
  12. gitlab 如何调出工程的setting
  13. 地理探测器“运行时系统找不到指定文件”报错
  14. 折腾一台准系统及i5 6600t简单测评
  15. 编1加到100的代码用C语言,用C语言编写一个程序,计算从1加到100的和,并将结果输出。跪求代码,急!...
  16. UI设计师=美工?不同是人眼里UI设计师~
  17. 【单片机笔记】集USB充电、USB供电和电池供电的电源设计
  18. JAVA打印300以内的质数
  19. 烤仔观察 | 从 KuCoin 被盗聊起,盘一盘那些年我们丢过的币
  20. WPS 中怎么屏蔽推送的消息热点?

热门文章

  1. opencv-图像上显示中文
  2. UEG-F-10H-L抗干扰中继电器
  3. c语言0阶乘分之一前三十项,MuPAD使用总结 - osc_wws45aot的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 【解决方案】夏季龙虾销售新高峰,龙虾养殖业如何保证安全智能?
  5. 帮你学习日语的软件分享
  6. 代码 - 软件测试扎心的痛
  7. 空间说说html,空间说说最新
  8. ngram mysql_mysql8 参考手册--ngram全文分析器
  9. 计算机无法开机如何读u盘启动,电脑开不开机重新安装系统步骤
  10. Keil中工程文件编译后没有显示.h文件