当前位置: 首页 > news >正文

43、vue导出pdf文件,并解决滚动条外内容无法获取的问题

使用插件html2canvas和jspdf插件

下载完两个插件后引入所需要的页面
import html2canvas from "html2canvas"
import jsPDF from "jspdf"

1、在导出之前将元素的高度或者宽度设置为滚动高度或者宽度,如:

el.style.height = el.scrollHeight + 'px';//把要导出的元素高度设置为滚动高度

2、转为图片之后再将高度/宽度设回来

//下载完成后改变浏览器界面可视区域高度
el.style.height = el.clientHeight+ 'px'

以下导出pdf方法

// 导出页面为PDF格式---使用插件html2canvas和jspdf插件
export function exportPDF(titleName, id) {document.body.scrollTop = document.documentElement.scrollTop = 0;let el = document.querySelector("#my_table_1");var clientH = el.clientHeight;el.style.height = el.scrollHeight + 'px';//把要导出的元素高度设置为滚动高度html2canvas(el, {allowTaint: true,useCORS: true,dpi: 120, // 图片清晰度问题background: "#142D42", //如果指定的div没有设置背景色会默认成黑色,这里是个坑y: 0}).then((canvas) => {var currentPage = 1;//未生成pdf的html页面高度var leftHeight = canvas.height;var a4Width = 576;var a4Height = 772.89; //A4大小,210mm x 297mm,四边各保留10mm的边距,显示区域190x277//一页pdf显示html页面生成的canvas高度;var a4HeightRef = Math.floor((canvas.width / a4Width) * a4Height);//pdf页面偏移var position = 0;var pageData = canvas.toDataURL("image/jpeg", 1.0);var pdf = new jsPDF("p", "pt", "a4"); //A4纸,纵向pdf.addFont('simkai-normal.ttf', 'simkai', 'normal')pdf.setFont('simkai')pdf.setFontSize(20)var index = 1,canvas1 = document.createElement("canvas"),height;pdf.setDisplayMode("fullwidth", "continuous", "FullScreen");function createImpl(canvas) {if (leftHeight > 0) {index++;var checkCount = 0;if (leftHeight > a4HeightRef) {var i = position + a4HeightRef;for (i = position + a4HeightRef; i >= position; i--) {var isWrite = true;for (var j = 0; j < canvas.width; j++) {var c = canvas.getContext("2d").getImageData(j, i, 1, 1).data;if (c[0] != 0xff || c[1] != 0xff || c[2] != 0xff) {isWrite = false;break;}}if (isWrite) {checkCount++;if (checkCount >= 10) {break;}} else {checkCount = 0;}}height =Math.round(i - position) || Math.min(leftHeight, a4HeightRef);if (height <= 0) {height = a4HeightRef;}} else {height = leftHeight;}canvas1.width = canvas.width;canvas1.height = height;var ctx = canvas1.getContext("2d");ctx.drawImage(canvas,0,position,canvas.width,height,0,0,canvas.width,height);var pageHeight = Math.round((a4Width / canvas.width) * height);if (position != 0) {pdf.addPage();}pdf.addImage(canvas1.toDataURL("image/jpeg", 1.0),"JPEG",10,40,a4Width,(a4Width / canvas1.width) * height);leftHeight -= height;position += height;if (leftHeight > 0) {setTimeout(createImpl, 500, canvas);} else {pdf.save(titleName + ".pdf");//下载完成后改变浏览器界面可视区域高度el.style.height = clientH + 'px'}}}let targetPage = pdf.internal.getNumberOfPages();//当内容未超过pdf一页显示的范围,无需分页if (leftHeight < a4HeightRef) {pdf.addImage(pageData,"JPEG",10,40,a4Width,(a4Width / canvas.width) * leftHeight);pdf.save(titleName + ".pdf");//下载完成后改变浏览器界面可视区域高度el.style.height = clientH + 'px'} else {try {pdf.deletePage(0);setTimeout(createImpl, 500, canvas);} catch (err) {}}})
}

vue页面使用

//导出pdf------ 数据统计汇总为导出文件名称;my_table_1为要导出的dom元素idexportData(){exportPDF("数据统计汇总",'my_table_1');},

相关文章:

43、vue导出pdf文件,并解决滚动条外内容无法获取的问题

使用插件html2canvas和jspdf插件 下载完两个插件后引入所需要的页面 import html2canvas from "html2canvas" import jsPDF from "jspdf"1、在导出之前将元素的高度或者宽度设置为滚动高度或者宽度&#xff0c;如&#xff1a; el.style.height el.scro…...

牛客 最小公配数 golang版实现

题目请参考: HJ108 求最小公倍数 题解: 在大的数的倍数里面去找最小的能整除另外一个数的数&#xff0c;就是最小公倍数&#xff0c;按照大的来找&#xff0c;循环次数能够降到很少&#xff0c;提升效率 golang实现: package mainimport ("fmt" )func main() {a : …...

用 HLS 实现 UART

用 HLS 实现 UART 介绍 UART 是一种旧的串行通信机制&#xff0c;但仍在很多平台中使用。它在 HDL 语言中的实现并不棘手&#xff0c;可以被视为本科生的作业。在这里&#xff0c;我将通过这个例子来展示在 HLS 中实现它是多么容易和有趣。 因此&#xff0c;从概念上讲&#xf…...

华清远见嵌入式学习——网络编程——作业4

作业要求&#xff1a;①使用IO多路复用中的select函数实现TCP并发服务器客户端 ②使用IO多路复用中的poll函数实现TCP并发服务器的服务器端 一、 代码 #include <myhead.h>#define SERPORT 8888 //服务器端口号 #define SERIP "192.168.114.113"…...

【OpenCV实现图像:制作酷炫的动画效果】

文章目录 概要生成背景图添加点动画添加文本显示小结 概要 首先&#xff0c;通过导入必要的库&#xff0c;包括NumPy用于数学运算和Matplotlib库用于数据可视化。随后&#xff0c;创建图形和轴&#xff0c;初始化点的位置&#xff0c;以及编写初始化函数和更新函数。 初始化函…...

CSS鼠标属性篇

属性名&#xff1a;cursor 功能&#xff1a;设置鼠标光标的样式 属性值&#xff1a; pointer&#xff1a;小手move&#xff1a;移动图标text&#xff1a;文字选择器crosshair&#xff1a;十字架wait&#xff1a;等待help&#xff1a;帮助 eg.html{ cursor: wait;}(此处使用css改…...

交直流一体化电源系统测试步骤详解

交直流一体化电源拥有高度适应性&#xff0c;可以用于不同的电力需求领域。但是为了确保其质量和性能&#xff0c;需要对交直流一体化电源进行各项测试以保证正常工作。本文纳米软件将介绍交直流一体化电源的测试方法&#xff0c;以及如何用交直流一体化电源测试系统进行测试。…...

多数据库使用django-apscheduler时,migrate后并不能生成django_apscheduler_djangojob表的问题

先说一下django-apscheduler定时器的使用过程&#xff1a; django-apscheduler基本使用 1.安装django-apscheduler代码如下&#xff08;示例&#xff09;&#xff1a; pip install django-apscheduler 2.配置settings.py的INSTALLED_APPS代码如下&#xff08;示例&#xff09…...

SPS简单对应分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…...

智能井盖传感器建设信息化时代智慧城市

近年来随着信息技术的快速发展和城市化进程的加速推进&#xff0c;智慧城市的概念逐渐成为现实。作为智慧城市生命线建设中的重要组成部分&#xff0c;智能井盖传感器的应用正在为城市的可持续发展和居民的生活质量提供新的解决方案。 智能井盖传感器能够实时监测井盖状态&…...

安装向量数据库milvus及其Attu

前置条件安装docker compose 在宿主机上创建文件目录 mkdir -p /home/sunyuhua/milvus/db mkdir -p /home/sunyuhua/milvus/conf mkdir -p /home/sunyuhua/milvus/etcd下载docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-s…...

量子计算概述

目录 1.量子计算介绍 2.量子计算应用 3.量子计算研究机构 1.量子计算介绍 量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式。经典计算使用2进制进行运算&#xff0c;但2进制只有0和1两种状态&#xff0c;而量子计算除了包含0和1两种状…...

校园圈子论坛,交友,帖子内短视频,二手市场,APP小程序H5三端交付,源码交付,支持二开

校园圈子论坛&#xff0c;交友频道&#xff0c;商城&#xff0c;二手市场&#xff0c;活动专区&#xff0c;短视频&#xff0c;从校园生活的方方面面展现出了充满活力和创造力的镜头。这个频道是一个让学生们相互交流、结识新朋友的平台&#xff0c;不仅有交友功能&#xff0c;…...

Request 爬虫的 SSL 连接问题深度解析

SSL 连接简介 SSL&#xff08;Secure Sockets Layer&#xff09;是一种用于确保网络通信安全性的加密协议&#xff0c;广泛应用于互联网上的数据传输。在数据爬取过程中&#xff0c;爬虫需要与使用 HTTPS 协议的网站进行通信&#xff0c;这就牵涉到了 SSL 连接。本文将深入研究…...

gin相关操作--一起学习921190764

gin官方文档 https://gin-gonic.com/docs/quickstart/1. 安装 go get -u github.com/gin-gonic/ginhttps://github.com/gin-gonic/gin简单入门 package mainimport ("github.com/gin-gonic/gin""net/http" )func pong(c *gin.Context) {//c.JSON(http.S…...

Linux查看开机启动的服务

在Linux系统中&#xff0c;可以使用不同的命令和工具来查看开机启动的服务。以下是一些常用的方法&#xff1a; systemctl 命令&#xff1a; 使用 systemctl 命令可以查看系统中所有正在运行的服务以及它们的状态。 systemctl list-units --typeservice若要查看某个特定服务的…...

微信小程序如何使用scss,less

搜到很多都是先VSCode安装好…插件…。这都是很久之前的方法了&#xff0c;所以想写这篇文章 一、修改project.config.json配置文件 "setting": {"useCompilerPlugins": ["sass"]},二、然后就可以删除 .wxss 文件了&#xff0c;就用 .scss 文件…...

2024东北师范大学计算机考研分析

24计算机考研|上岸指南 东北师范大学 信息科学与技术学院位于长春净月国家高新技术产业开发区&#xff0c;毗邻风光秀美的净月潭国家森林公园。 信息科学与技术学院由原“计算机科学与信息技术学院”和“信息与软件工程学院”于2017年根据学校事业发展需要整合形成。学院设有…...

MFC中窗口居中显示

MFC中窗口居中显示 对于一个窗体&#xff0c;可以使用其CenterWindow方法将其居中&#xff0c;CenterWindow方法有一个参数&#xff0c;通过其指定居中操作相对应的父窗口。 CenterWindow方法的原型如下&#xff1a; void CenterWindow(CWnd* pAlternateOwner NULL);如果要…...

Ajax基础(应用场景|jquery实现Ajax|注意事项|Ajax发送json数据|Ajax携带文件数据)

文章目录 一、Ajax简介二、基于jquery实现Ajax三、使用Ajax注意的问题1.Ajax不要与form表单同时提交2.后端响应格式问题3、使用了Ajax作为请求后的注意事项 四、前后端数据传输的编码格式(content-Type)1.urlencoded2.formdata3.application/json 五、Ajax携带文件数据六、Ajax…...

别再只会调库了!手把手教你用Arduino的PWM引脚,让循迹小车转弯丝滑又精准

从PWM原理到实战&#xff1a;让你的Arduino循迹小车转弯如丝般顺滑 看着自己组装的循迹小车在赛道上磕磕绊绊地前进&#xff0c;时而冲出轨道&#xff0c;时而原地打转&#xff0c;这种挫败感每个Arduino爱好者都深有体会。问题的核心往往不在于硬件组装&#xff0c;而在于对PW…...

FPGA调试效率翻倍:把VIO IP核当成你的交互式‘信号开关’与‘仪表盘’

FPGA调试效率革命&#xff1a;用VIO构建硬件工程师的交互式仪表盘 在FPGA开发的世界里&#xff0c;调试环节往往占据项目周期的60%以上时间。传统调试方式如同在黑暗房间摸索开关&#xff0c;每次修改测试激励都需要经历漫长的综合-实现-下载循环。而VIO&#xff08;Virtual In…...

第42篇:U-Net网络实战:医学图像分割——AI辅助诊断的基石(项目实战)

文章目录项目背景技术选型架构设计核心实现1. 数据加载与预处理2. U-Net模型定义3. 损失函数与训练循环踩坑记录效果对比项目背景 在AI辅助诊断领域&#xff0c;医学图像分割是至关重要的一步。它就像医生的“智能画笔”&#xff0c;能自动从CT、MRI等影像中勾勒出病灶区域&am…...

2025届最火的AI辅助论文网站横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当前&#xff0c;已然成为学术方面新态势的情况是&#xff0c;运用人工智能辅助撰写毕业论文…...

Spring Cloud微服务日志改造实战:从logback平滑迁移到log4j2,并搞定异步线程TraceId丢失问题

Spring Cloud微服务日志改造实战&#xff1a;从Logback到Log4j2的平滑迁移与TraceId全链路追踪 在微服务架构中&#xff0c;日志系统如同神经系统的感知末梢&#xff0c;承载着系统运行状态的完整记录。当服务调用链路变得复杂&#xff0c;特别是涉及异步处理时&#xff0c;传统…...

哈希表、双指针、滑动窗口、栈、BFS | :原理 + 解决什么问题 + 怎么实现 + 应用场景

一、哈希表&#xff08;Hash Table / Python 里叫 dict /set&#xff09;1. 原理&#xff08;超级通俗&#xff09;哈希表 字典你给一个 key&#xff08;关键词&#xff09;&#xff0c;它能瞬间找到 value。它内部用哈希函数把 key 转成一个地址&#xff0c;所以查找极快。2.…...

pcb-4月28

三线排针&#xff1a;C293762510k电阻&#xff1a;C713919LED : C2895470330欧姆电阻&#xff1a;C2848567USB供电&#xff1a; C404969typec &#xff1a; C27651865.1千欧电阻&#xff1a;C25905保险丝&#xff1a; C72007510uf电容&#xff1a;C15850100nf电容&#xff1a;C…...

PX4+FlightGear联合仿真入门:从QGroundControl连接、虚拟摇杆设置到首次飞行实操

PX4FlightGear联合仿真实战&#xff1a;从零操控到首次飞行全解析 当FlightGear的蓝天白云界面在屏幕上展开&#xff0c;而PX4控制台闪烁着待命光标时&#xff0c;许多无人机爱好者会陷入短暂的迷茫——环境搭建只是起点&#xff0c;真正的挑战在于如何让这架虚拟飞机听从指令翱…...

CTF-MISC工具箱盘点:Steghide、010 Editor、Python脚本...这些工具如何帮你拿下‘神奇的压缩包’和‘李华的身份证’?

CTF-MISC实战工具箱&#xff1a;从隐写到爆破的自动化艺术 在CTF竞赛的MISC&#xff08;杂项&#xff09;领域&#xff0c;工具链的熟练程度往往决定了解题速度的上限。当面对一个看似无解的压缩包、一张隐藏关键信息的图片&#xff0c;或是一串意义不明的加密字符串时&#xf…...

如何选择合适的AI大模型:快快云安全AI大模型聚合平台全解析

当AI大模型从技术概念走向产业刚需&#xff0c;企业与开发者正陷入一场甜蜜的困境&#xff1a;一边是通用大模型、垂直大模型、多模态模型层出不穷&#xff0c;能力边界持续拓宽&#xff1b;另一边是单独对接成本高、合规风险难控、安全防护缺失、模型兼容性混乱&#xff0c;让…...