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

Blob格式的PDF文件调用打印,浏览器文件打印(兼容)

浏览器文件打印,解决:非整个浏览器页面打印,指定模块儿打印

要调用 iframe 中加载的 PDF 文件的打印功能,可以直接操作 iframe 的 contentWindow 对象,调用其内置的打印方法(PDF 浏览器插件或 PDF.js 渲染器通常会暴露 print() 方法)。以下是具体实现方式:

实现思路

  1. 确保 iframe 已完全加载 PDF(监听 load 事件)。
  2. 通过 iframe 的 contentWindow 调用 PDF 的打印方法(不同浏览器可能有差异,需兼容处理)。
  3. 若直接调用失败,降级使用 window.print() 打印整个 iframe 内容。
<iframe :src="fileUrl" width="100%" height="700px" ref="pdfIframe" @load="handleIframeLoad"></iframe>
<el-button size="small" type="primary" @click="printPdf()">打印</el-button>

fileUrl 文件地址; @load="handleIframeLoad" 判断pdf文件是否加载完成。

// 监听 iframe 加载完成handleIframeLoad() {this.isIframeLoaded = true;console.log('PDF 加载完成,可打印');},// 打印 iframe 中的 PDFprintPdf() {if (!this.isIframeLoaded) {alert('PDF 尚未加载完成,请稍后再试');return;}const iframe = this.$refs.pdfIframe;const iframeWindow = iframe.contentWindow;try {// 方案1:直接调用 PDF 内置的打印方法(主流浏览器对 PDF 支持较好)if (iframeWindow.print) {// 部分浏览器中,PDF 的 print() 是异步的,需包裹在 setTimeout 中setTimeout(() => {iframeWindow.print();}, 100);} else {// 方案2:降级使用 window.print() 打印整个 iframe 区域this.printIframeWithWindowPrint(iframe);}} catch (error) {console.error('打印失败,使用降级方案', error);this.printIframeWithWindowPrint(iframe);}},// 降级方案:使用 window.print() 并指定只打印 iframe 内容printIframeWithWindowPrint(iframe) {// 保存当前页面的打印样式const originalStyle = document.body.style;// 隐藏页面其他内容,只显示 iframedocument.body.style.visibility = 'hidden';iframe.style.visibility = 'visible';iframe.style.position = 'fixed';iframe.style.top = '0';iframe.style.left = '0';iframe.style.width = '100%';iframe.style.height = '100%';// 触发打印window.print();// 恢复页面样式(打印完成后执行)setTimeout(() => {document.body.style = originalStyle;iframe.style = ''; // 恢复 iframe 原有样式}, 100);},

http://www.dtcms.com/a/600948.html

相关文章:

  • 软件单例模式
  • 微服务搭建----springboot接入Nacos2.x
  • DataWhale-HelloAgents(第二部分:大语言模型基础)
  • 批量转换论文正文引用为上标后转PDF保持上标
  • 一个简洁的独立站(带产品管理功能+双语言)
  • 阿里巴巴网站建设建议广州网页设计机构
  • Hello-agents TASK02 第三章节 大模型基础
  • 深入理解cursor 中的mcp工作原理
  • Nginx 基础教程:从安装到核心配置(视频教程)
  • 实战指南:使用 CAN FD LIN网关进行嵌入式开发与协议转换
  • Excel插件:学校成绩统计与排名介绍
  • IBMS三维可视化集成系统产品介绍
  • 网站负责人核验现场拍摄照片电子件网站建设总结经验
  • 宇宙膨胀速度的光速极限:基于张祥前统一场论的第一性原理推导与观测验证
  • Custom SRP - 14 Multiple Cameras
  • QT开发汇总(更新2025.11.12)
  • HTML5 MathML:现代网页中的数学表达利器
  • wordpress admin head简述搜索引擎优化
  • DeepSeek-OCR实战(05):DeepSeek-OCR-WebUI部署(Docker)
  • CI/CD自动化部署革命:“三分钟流水线“背后的工程实践
  • 【工具】PixPin 电脑实用截图工具!带免费OCR截图/贴图/录屏/文字识别
  • 京东关键字搜索接口逆向:从动态签名破解到分布式请求调度
  • 第三章 大语言模型基础学习笔记
  • 莱芜网站设计公司制作图片文字的软件
  • 自己做本地视频网站商城网站开发的任务书
  • 通过 API 与 Gradio 构建 AI 应用
  • 【C++进阶】二叉树进阶
  • 【C++】多态(2):纯虚函数多态底层原理
  • C++/Linux小项目:自主shell命令解释器
  • MEMS振荡器MST8012抗冲击设计应对严苛振动环境