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

使用 html2canvas + jspdf 实现页面元素下载为pdf文件

使用 html2canvas + jspdf 实现页面元素下载为pdf文件

准备

<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
js文件可以用在线文件,但是在工作环境中,最后下载下来保存到本地。

页面元素信息

我们需要给定一个 html 的元素,用id标注,方便js获取

<div id="pdfArea"><table><tr><th>姓名</th><th>年龄</th></tr><tr><td>张三</td><td>25</td></tr></table>
</div><button onclick="downloadPDF()">下载 PDF</button>

js相关

js相关代码逻辑,已支持pdf待白边,更美观

function downloadPDF() {const { jsPDF } = window.jspdf;const element = document.getElementById("pdfArea");html2canvas(element, {scale: 2,useCORS: true}).then(canvas => {const imgData = canvas.toDataURL("image/png");const pdf = new jsPDF("p", "mm", "a4");const pageWidth = pdf.internal.pageSize.getWidth();   // 210const pageHeight = pdf.internal.pageSize.getHeight(); // 297const margin = 15; // 白边宽度(mm)const imgWidth = pageWidth - margin * 2;const imgHeight = (canvas.height * imgWidth) / canvas.width;let heightLeft = imgHeight;let position = margin; // 起始 Y 坐标(顶部白边)pdf.addImage(imgData, "PNG", margin, position, imgWidth, imgHeight);heightLeft -= pageHeight - margin * 2;while (heightLeft >= 0) {position = heightLeft - imgHeight + margin;pdf.addPage();pdf.addImage(imgData, "PNG", margin, position, imgWidth, imgHeight);heightLeft -= pageHeight - margin * 2;}pdf.save("文件名.pdf");});
}
http://www.dtcms.com/a/353135.html

相关文章:

  • Transformer 模型在自动语音识别(ASR)中的应用
  • 华为L420国产笔记本(统信UOS桌面专业版1070)安装openEuler2403虚拟机
  • 基于Spring Boot的民宿服务管理系统-项目分享
  • Python 并行计算进阶:ProcessPoolExecutor 处理 CPU 密集型任务
  • Java设计模式之《外观模式》
  • 广东省省考备考(第八十八天8.27)——判断推理(第八节课)
  • 31. 什么是字符串常量池
  • 2025.8.27链表_链表逆置
  • 【Python-1】字符串连接方式“+“和“,”的区别
  • AI + 旅游 = 应用案例分析(一)
  • TDengine IDMP 5 个实测场景让监控变简单
  • 【和春笋一起学C++】(三十七)类的析构函数
  • rust语言(1.88.0)sqlite数据库rusqlite库(0.37.0)学习笔记
  • Linux 服务器故障全解析:常见问题及处理方法大全
  • 极简风格PDF格式转换解决方案
  • java将doc文件转pdf
  • PDF补丁丁:开源多年,完全免费的多功能 PDF 工具箱
  • Magicodes.IE.Pdf 生成导出PDF文件 bytes Stream FileStreamResult 下载
  • 像WPS Office 一样处理pdf页面尺寸
  • OpenGL 视差贴图
  • UVa11607 Cutting Cakes
  • Java垃圾回收器:从SerialGC到G1的演进/速通
  • 流程控制语句(1)
  • 如何检查 Linux 系统的内存使用情况
  • vue2实现背景颜色渐变
  • 【目标检测】论文阅读4
  • 分布式2PC理论
  • 大脑的藏宝图——神经科学如何为自然语言处理(NLP)的深度语义理解绘制新航线
  • (11)用于无GPS导航的制图师SLAM(一)
  • 【Android】原安卓生态发起网络GET请求 Post请求