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

luckysheet的使用——17.将表格作为pdf下载到本地

luckysheet源码里面自带有打印按钮,但是功能是无法使用的,所以我把该功能重写了一遍

1.在menuButton.js文件中找到源码打印按钮的触发事件:

$("#luckysheet-icon-print").click(function () {}

2.使用自己写的挂载方法

window.printExcel()

3.在自己的前端项目中,将printExcel挂载上去

window.printExcel = this.printExcel

4.编写我们的导出pdf方法

printExcel(){		// 手动实现全选选区,这样打印pdf才可以将滚动条没有展示的内容也一起打印$('#luckysheet-left-top').click();//获取画布元素let sourceCanvas = document.getElementById('luckysheetTableContent')// 调用luckysheet提供的api,获取选区的截图数据let imgData = window.luckysheet.getScreenshot();// 目标DPI (例如300 DPI)const targetDPI = 300;// 计算从像素到毫米的转换因子 (1 inch = 25.4 mm, 默认屏幕分辨率为96 DPI)const dpiConversionFactor = targetDPI / 96; // 如果目标是300 DPI,则转换因子约为3.125// 将canvas的宽高按目标DPI转换为毫米const pdfWidthMM = (sourceCanvas.width * 25.4) / targetDPI;const pdfHeightMM = (sourceCanvas.height * 25.4) / targetDPI;// 创建 jsPDF 实例const pdf = new jsPDF({orientation: sourceCanvas.width > sourceCanvas.height ? 'l' : 'p', // 根据宽高决定方向unit: 'mm', // 使用毫米作为单位format: [pdfWidthMM * dpiConversionFactor, pdfHeightMM * dpiConversionFactor] // 设置页面尺寸});// 添加图片到 PDF 中,注意这里我们需要根据之前设置的 PDF 页面尺寸来调整图片尺寸// 使用 getEffectivePageSize 来获取实际页面尺寸,因为可能会受到边距等影响const effectivePageWidth = pdf.internal.pageSize.getWidth();const effectivePageHeight = pdf.internal.pageSize.getHeight();//插入luckysheet内容pdf.addImage(imgData, 'PNG', 0, 0, effectivePageWidth, effectivePageHeight);// 保存 PDF 文档pdf.save( "导出.pdf");
}

这里我们需要先安装jsPdf,使用命令行安装

npm install jspdf --save

然后在指定页面引入

import {jsPDF} from "jspdf";

相关文章:

  • Node-Red通过Profinet转ModbusTCP采集西门子PLC数据配置案例
  • BGP综合实验(2)
  • 高项-挣值管理TCPI
  • 软件设计师“测试用例”考点分析——求三连
  • ip与mac-数据包传输过程学习
  • 社交平台推出IP关联机制:增强用户体验与网络安全的新举措
  • 紫光同创FPGA实现AD9238数据采集转UDP网络传输,分享PDS工程源码和技术支持和QT上位机
  • 解决报错 Flask-SQLAlchemy TypeError: ‘float‘ object is not callable
  • Linux内核深入学习(4)——内核常见的数据结构之链表
  • WebRTC技术EasyRTC嵌入式音视频通信SDK助力智能电视搭建沉浸式实时音视频交互
  • 正点原子STM32新建工程
  • 容器化-K8s-镜像仓库使用和应用
  • 【Linux学习】Ubuntu对用户进行管理
  • 云原生安全:错误策略S3存储桶ACL设置为Everyone:FullControl
  • CSS新增表单属性及结构伪类选择器(nth-child)
  • 深入探究AKS Workload Identity
  • AT 指令详解:基于 MCU 的通信控制实战指南AT 指令详解
  • Linux多进程 写时拷贝 物理地址和逻辑地址
  • MATLAB中NLP工具箱支持聚类算法
  • 第 1 章:数字 I/O 与串口通信(GPIO UART)
  • 43.2℃!河南林州打破全省5月最高温纪录,明后天高温将持续
  • 国家统计局:消费对我国经济增长的拉动有望持续增长
  • 自媒体假扮官方蹭反间谍热度攫取利益,国安机关提醒
  • 芬兰直升机相撞坠毁事故中五名人员全部遇难
  • 网警打谣:传播涉刘国梁不实信息,2人被处罚
  • 纪念|脖子上挂着红领巾的陈逸飞