当前位置: 首页 > 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.xdnf.cn/news/1374517.html

相关文章:

  • UE5 查找组件
  • 云原生安全架构设计与零信任实践
  • 预测模型及超参数:1.传统机器学习:SVR与KNN
  • 工业网络安全:保护制造系统和数据
  • HIVE的Window functions窗口函数【二】
  • 【Hadoop】Zookeeper、HBase、Sqoop
  • 全球位置智能软件CR10为73%,市场集中度高
  • Java中高效获取IP地域信息方案全解析:从入门到生产实践
  • jQuery版EasyUI的ComboBox(下拉列表框)问题
  • JS(面试)
  • Proxmox VE 中启用 CentOS 虚拟机的串口终端(xterm.js 控制台)
  • 深度剖析HTTP和HTTPS
  • .NetCore 接入 Nacos,实现配置中心和服务注册
  • 本地windows电脑部署html网页到互联网:html+node.js+ngrok/natapp
  • oracle 表空间扩容(增加新的数据文件)
  • 使用appium对安卓(使用夜神模拟器)运行自动化测试
  • STM32八大模式
  • 基于单片机空调温度控制测温ds18b20系统Proteus仿真(含全部资料)
  • 人机交互如何变革科普展示?哪些技术正成吸睛焦点?
  • 初春养生指南模板页
  • Rust 登堂 之 迭代器Iterator(三)
  • el-carousel在新增或者删除el-carousel-item时默认跳到第一页的原因和解决
  • betaflight configurator 如何正确烧写飞控
  • 基于muduo库的图床云共享存储项目(二)
  • Linux 云服务器内存不足如何优化
  • 【RAG】使用llamaindex进行RAG开发
  • 6 种无需 iTunes 将照片从 iPhone 传输到电脑
  • TDengine IPv6 支持用户手册
  • “java简单吗?”Java的“简单”与PHP的挑战:编程语言哲学-优雅草卓伊凡
  • KDMS V4 重磅升级,智能迁移赋能国产化替代!