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

前端导出pdf

async generatePDF() {const element = this.$refs.contentToPrint; // 你想要转换成PDF的DOM元素// 使用html2canvas将DOM元素转换成canvasconst canvas = await html2canvas(element);const imgData = canvas.toDataURL('image/png');// 创建PDF并添加图片const pdf = new jsPDF({orientation: 'portrait',unit: 'px',format: 'a4',});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.save('download.pdf'); // 保存PDF},// generatePDF() {  //   const doc = new jsPDF()  //   doc.text("Hello world!", 10, 10)  //   doc.save("a4.pdf")  // },
    <div><el-button type="primary" @click="generatePDF">生成PDF</el-button>  </div><div style="padding:20px 10px"  ref="contentToPrint"></div>

解决图片无法显示问题

async generatePDF() {const element = document.getElementById('content'); // 你想要导出为PDF的DOM元素const opts = {scale: 4, // 缩放比例,提高生成图片清晰度useCORS: true, // 允许加载跨域的图片// allowTaint: false, // 允许图片跨域,和 useCORS 二者不可共同使用tainttest: true, // 检测每张图片都已经加载完成logging: true // 日志开关,发布的时候记得改成 false}const canvas = await html2canvas(element,opts);const imgData = canvas.toDataURL('image/png');const pdf = new jsPDF('p', 'mm', 'a4');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.save('download.pdf');},

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Science Advances 仿生双模态触觉感知
  • c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决
  • PMON的解读和开发
  • java通过poi-tl导出word实战详细步骤
  • 视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器
  • git diff,stash,submodule,format-patch
  • 自定义波形图View,LayoutInflater动态加载控件保存为本地图片
  • 上传图片,base64改为文件流,并转给后端
  • QT 图片处理
  • C#的DllImport使用方法
  • STM32智能空气质量监测系统教程
  • VUE与React的生命周期对比
  • 基于物联网的智慧校园建设与发展
  • 打造你的智能家居指挥中心:基于STM32的多协议(zigbee、http)网关(附代码示例)
  • 【MySQL】4.MySQL 的数据类型
  • [译] 怎样写一个基础的编译器
  • crontab执行失败的多种原因
  • CSS盒模型深入
  • go append函数以及写入
  • IP路由与转发
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JS笔记四:作用域、变量(函数)提升
  • Less 日常用法
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 订阅Forge Viewer所有的事件
  • 动态规划入门(以爬楼梯为例)
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 批量截取pdf文件
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #if等命令的学习
  • #pragma once与条件编译
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (13)Hive调优——动态分区导致的小文件问题
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C#)获取字符编码的类
  • (C语言)逆序输出字符串
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (四)进入MySQL 【事务】
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)ObjectiveC 深浅拷贝学习
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • ***利用Ms05002溢出找“肉鸡
  • .net dataexcel 脚本公式 函数源码
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • ??myeclipse+tomcat
  • @EnableAsync和@Async开始异步任务支持
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网