当前位置: 首页 > 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 一个最新的截图插件,还没尝试,听说效率更高,更好用

相关文章:

  • dify应用实践教程5
  • 量子机器学习前沿:量子神经网络与混合量子-经典算法
  • 【图片识别改名】自动识别图片中的文字并给图片命名 ,图片自动识别并且能重命名的操作步骤和注意事项
  • Spark基于Bloom Filter算法的Runtime Filter Join优化机制
  • 【论文阅读35】-PINN review(2021)
  • AI编程再突破,文心快码发布行业首个多模态、多智能体协同AI IDE
  • 【LeetCode】用双指针解决移除元素问题、合并两个有序数组求解
  • 基于openfeign拦截器RequestInterceptor实现的微服务之间的夹带转发
  • 搭建网站时用到的技术
  • VoiceAgent技术赋能债务重组:合规、高效、有温度的金融债务解决方案
  • Java面试复习指南:基础、并发、JVM与Spring框架
  • 零基础学习RabbitMQ(2)--Linux安装RabbitMQ
  • 硬件工程师笔试面试高频考点汇总——(2025版)
  • (LeetCode 面试经典 150 题) 27.移除元素
  • Spring Boot:运用Redis统计用户在线数量
  • 百度AIP:Springboot人脸对比
  • 【钓鱼预警】针对跨境销售投递Tesla间谍木马
  • <tauri><threejs><rust><GUI>基于tauri和threejs,实现一个3D图形浏览程序
  • 初探 Nacos 原理
  • Qt/C++开发监控GB28181系统/rtp解包/jrtplib库的使用/同时支持udp和tcp被动和主动三种方式解包
  • 做网站智能工具/网络培训心得体会
  • 泉州住房建设局网站/关键词推广效果分析
  • python人狗大csdn/网站自然排名怎么优化
  • 厦门网站制作方案/百度搜索风云榜
  • 做网站便宜的公司/大连最好的做网站的公司
  • 网站加入站长统计/百度一下百度知道