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

前端截图并导出pdf

实践 

使用domtoimage和domToPdf

说明:

1 需要将页面的一个流程图导出

2 要求导出成pdf,且pdf上有标题等内容

做法:

因为导出的pdf中包含不存在页面上的内容

需要先将流程图截图成图片,再生成dom节点,之后导出成pdf

代码实现:

import domtoimage from 'dom-to-image';
import domToPdf from 'dom-to-pdf';exportToPngDirect() {if(this.exportLoading) returnthis.exportLoading = truethis.$message && this.$message.loading('导出中...')const container = document.querySelector('.life-main');if (!container) return;domtoimage.toPng(container, {bgcolor: '#F5F5F8',width: container.offsetWidth,height: container.offsetHeight,style: { 'background-color': '#F5F5F8' }}).then((dataUrl) => {this.base64Url = dataUrl;this.$nextTick(()=>{this.exportToPdf()})}).catch((error) => {this.$message.error('截图失败,请重试');this.exportLoading = false});},exportToPdf() {const title = '截图demo'// 1. 创建临时 DOMconst tempDiv = document.createElement('div');// 2. 填充内容tempDiv.innerHTML = `<h1 style="font-size:28px;text-align:center;margin:40px 0 20px 0;">流程引导图</h1><h2 style="font-size:18px;margin:0 0 20px 40px;">${title}</h2><img src="${this.base64Url}" style="max-width:100%;display:block;margin:0 auto;" />`;// 4. 导出 PDFdomToPdf(tempDiv, {filename: '流程图.pdf',pdf: { format: 'a4', orientation: 'portrait', unit: 'px' },image: { type: 'jpeg', quality: 0.98, backgroundColor: '#fff' }}, () => {this.exportLoading = falsethis.$message && this.$message.destroy()this.$message && this.$message.success('PDF导出成功!');});},

截图插件记录:

1 @zumer/snapdom

snapDOM – 以卓越的准确性和速度捕获 HTML 到图像

2 html2canvas

3 dom-to-image

对于更复杂的dom,dom-to-image比html2canvas更适合

snapDom 一个最新的截图插件,还没尝试,听说效率更高,更好用

http://www.lqws.cn/news/491419.html

相关文章:

  • 基于Django和MySQL的智能图像分类与情感分析系统
  • Nginx-前端跨域解决方案!
  • AI+地图打车:如何用机器学习实现小程序订单智能匹配与路径优化?
  • 征服分布式系统:阿里云 Linux 多机互联与资源共享实战指南
  • 区块链大讲堂 | 分布式隐私计算友好的零知识证明协议
  • 基于PostgreSQL的百度或高德等POI多层级分类的数据库设计
  • [Java恶补day31] 21. 合并两个有序链表
  • 【ARM 嵌入式 编译系列 7.5 -- GCC 打印链接脚本各段使用信息】
  • 华为OD机试_2025 B卷_矩形相交的面积(Python,100分)(附详细解题思路)
  • 联合语音和文本机器翻译,支持多达100种语言(nature子刊论文研读)
  • Restormer: Efficient Transformer for High-Resolution Image Restoration 论文阅读
  • 树莓派超全系列教程文档--(66)rpicam-apps可用选项介绍之视频选项
  • 2025年CCF先进音频技术竞赛
  • sublime 4200 激活
  • K8S: etcdserver: too many requests
  • 计算机网络:(六)超详细讲解数据链路层 (附带图谱表格更好对比理解)
  • 编程语言的跨代演进:从C到Rust再到AI驱动语言的时代变革
  • docker方式启动Jenkins
  • EEG分类 - Theta 频带 power
  • 图像处理基础篇
  • [特殊字符] OpenCV opencv_world 模块作用及编译实践完整指南
  • 软件设计模式期末复习模拟解析
  • 运维打铁: Windows 服务器基础运维要点解析
  • arcgis分割 (Split)
  • 目标检测之YOLOv5到YOLOv11——从架构设计和损失函数的变化分析
  • 微信小程序:选择页面单选实现(多页面均可选择)
  • 黑马React001
  • 用Tensorflow进行线性回归和逻辑回归(三)
  • 【论文阅读35】-PINN review(2021)
  • Docker快速部署可视化防火墙工具:使用go语言开发,底层是iptables,提供API调用