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

前端将网页转换为pdf并支持下载与上传

1.pdf下载


handleExport() {const fixedH = document.getElementById("fixed-h");const pageOne = document.getElementById("mix-print-box-one");const pageTwo = document.getElementById("mix-print-box-two");fixedH.style.height = '30vh';pageOne.style.display = 'block';pageTwo.style.display = 'block';// 禁止滚动document.body.addEventListener('touchmove', this.preventDefaultScroll, { passive: false });document.body.addEventListener('wheel', this.preventDefaultScroll, { passive: false });html2canvas(pageOne).then((canvasOne) => {const imgOne = canvasOne.toDataURL("image/png");const pdf = new jsPDF();const propsOne = pdf.getImageProperties(imgOne);const widthOne = pdf.internal.pageSize.getWidth();const heightOne = (propsOne.height * widthOne) / propsOne.width;pdf.addImage(imgOne, "PNG", 0, 0, widthOne, heightOne);html2canvas(pageTwo).then(canvasTwo => {const imgTwo = canvasTwo.toDataURL("image/png");const propsTwo = pdf.getImageProperties(imgTwo);const widthTwo = pdf.internal.pageSize.getWidth();const heightTwo = (propsTwo.height * widthTwo) / propsTwo.width;pdf.addPage(); // 分页pdf.addImage(imgTwo, "PNG", 0, 0, widthTwo, heightTwo);const title = `${this.formOne.application}测试的.pdf`;pdf.save(title);fixedH.style.height = 'auto';pageOne.style.display = 'none';pageTwo.style.display = 'none';// 恢复滚动document.body.removeEventListener('touchmove', this.preventDefaultScroll);document.body.removeEventListener('wheel', this.preventDefaultScroll);});});
}

2.pdf上传


handleUploadPdf(id) {const element = document.getElementById("myElementId");html2canvas(element).then((canvas) => {const imgData = canvas.toDataURL("image/png");const pdf = new jsPDF();const imgProps = pdf.getImageProperties(imgData);const pdfWidth = pdf.internal.pageSize.getWidth();const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;pdf.addImage(imgData, "PNG", 0, 0, pdfWidth, pdfHeight);// 将 PDF 转换为 Blob 对象const blob = pdf.output("blob");// 上传文件const fileName = "测试的.pdf";const formData = new FormData();formData.append("file", blob, fileName);uploadPdf(formData).then((res) => {// 将pdf地址传给后端uploadPdfUrl({id,fileName,path: res.fileName,});console.log("上传成功", res.url);});});
}

http://www.lryc.cn/news/477831.html

相关文章:

  • Android 依赖统一配置管理(Version Catalogs)
  • 如何为数据看板产品接入实时行情接口并展示行情
  • 数据结构 C/C++(实验一:线性表)
  • 使用WebStorm开发Vue3项目
  • Linux高阶——1103——Signal信号机制
  • 如何编写STM32的定时器程序
  • 【C++】C++的单例模式、跟踪内存分配的简单方法
  • 构建一个导航栏web
  • 【Linux】Linux安全与密钥登录指南
  • 数据采集之scrapy框架
  • ReactPress—基于React的免费开源博客CMS内容管理系统
  • Android 解决飞行模式下功耗高,起伏波动大的问题
  • 2024第三次随堂测验参考答案
  • 期权交易策略 v0.1
  • pytorch学习:矩阵分解:奇异值分解(SVD分解)
  • 接口测试用例设计的关键步骤与技巧解析!
  • CSS画icon图标系列(一)
  • 【数据结构-合法括号字符串】【华为笔试题】力扣1190. 反转每对括号间的子串
  • qt QFileInfo详解
  • 金华迪加 现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现
  • 探寻5G工业网关市场,5G工业网关品牌解析
  • RK3568开发板静态IP地址配置
  • element-plus table tableRowClassName 无效
  • 商务英语学习柯桥学外语到泓畅-老外说“go easy on me”是什么意思?
  • 【Python爬虫基础】基于 Python 的反爬虫机制详解与代码实现
  • HTB:PermX[WriteUP]
  • uniapp 整合 OpenLayers - 使用modify修改要素
  • JMeter快速造数之数据导入导出
  • 框架学习01-Spring
  • Java | Leetcode Java题解之第539题最小时间差