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

JavaScript调用系统自带的打印页面

JavaScript调用系统自带的打印页面

export function printPdf(data: BlobPart,) {
  const blob = new Blob([data], { type: 'application/pdf' })
  let date = (new Date()).getTime()
  let ifr = document.createElement('iframe')
  ifr.style.frameborder = 'no'
  ifr.style.display = 'none'
  ifr.style.pageBreakBefore = 'always'
  ifr.setAttribute('id', 'printPdf' + date)
  ifr.setAttribute('name', 'printPdf' + date)
  ifr.src = window.URL.createObjectURL(blob)
  document.body.appendChild(ifr)
  doPrint('printPdf' + date)
  window.URL.revokeObjectURL(ifr.src) // 释放URL 对象
}

function doPrint(val) {
  let ordonnance = document.getElementById(val).contentWindow
  console.log(ordonnance)
  setTimeout(() => {
    ordonnance.print()
  }, 100)
}

这两段代码是用于在网页中打印PDF文件的JavaScript函数。下面是每个函数的详细解释:

printPdf 函数

这个函数接收一个参数 data,这个参数应该是PDF文件的内容,类型为 BlobPartBlobPart 可以是 BlobFile 或者 ArrayBuffer 等类型,这里用于创建一个新的 Blob 对象,该对象代表PDF文件。

  1. 创建Blob对象

    const blob = new Blob([data], { type: 'application/pdf' })
    

    这行代码创建了一个新的 Blob 对象,其中包含PDF数据,并指定了MIME类型为 application/pdf

  2. 生成时间戳

    let date = (new Date()).getTime()
    

    获取当前时间的时间戳,用于生成唯一的ID。

  3. 创建iframe元素

    let ifr = document.createElement('iframe')
    

    创建一个 iframe 元素,用于在其中加载PDF文件。

  4. 设置iframe属性

    ifr.style.frameborder = 'no'
    ifr.style.display = 'none'
    ifr.style.pageBreakBefore = 'always'
    ifr.setAttribute('id', 'printPdf' + date)
    ifr.setAttribute('name', 'printPdf' + date)
    

    设置 iframe 的样式和属性,使其不可见,并且在页面中不会显示边框。同时,使用时间戳生成唯一的ID和名称。

  5. 设置iframe的src属性

    ifr.src = window.URL.createObjectURL(blob)
    

    使用 Blob 对象创建一个对象URL,并将其设置为 iframesrc 属性,这样 iframe 就会加载PDF文件。

  6. 将iframe添加到文档中

    document.body.appendChild(ifr)
    

    iframe 添加到文档的 body 中。

  7. 调用打印函数

    doPrint('printPdf' + date)
    

    调用 doPrint 函数,传入 iframe 的ID,用于打印PDF文件。

  8. 释放URL对象

    window.URL.revokeObjectURL(ifr.src)
    

    释放之前创建的对象URL,以释放内存。

doPrint 函数

这个函数接收一个参数 val,这个参数应该是 iframe 的ID。

  1. 获取iframe内容窗口

    let ordonnance = document.getElementById(val).contentWindow
    

    通过ID获取 iframe 元素,并获取其内容窗口。

  2. 打印PDF

    setTimeout(() => {
      ordonnance.print()
    }, 100)
    

    使用 setTimeout 延迟100毫秒后调用 iframe 内容窗口的 print 方法,以打印PDF文件。

总结

这两段代码的主要目的是在网页中创建一个隐藏的 iframe,用于加载PDF文件,并自动调用打印功能。这种方法可以在不显示PDF文件的情况下直接打印PDF内容。


http://www.kler.cn/a/394665.html

相关文章:

  • docker redis安装
  • No.29 笔记 | CTF 学习干货
  • Nginx的性能分析与调优简介
  • 策略模式以及优化
  • 计算机网络——期末复习(3)4-6章考试重点
  • Java爬虫技术:按关键字搜索VIP商品详情
  • 云服务器端口开放
  • MATLAB保存多帧图形为视频格式
  • 11个简单易用的电商购物车设计案例
  • MATLAB实现最大最小蚁群算法(Max-Min Ant Colony Optimization, MMAS)
  • 动态规划 —— dp 问题-买卖股票的最佳时机IV
  • 从swagger直接转 vue的api
  • Servlet三小时速成
  • request爬虫库的小坑
  • C++ 面向接口编程而不是面向实现编程,其优点和具体措施
  • 线性DP 区间DP C++
  • Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件
  • Python中的正则表达式教程
  • 正则表达式那些事儿
  • 融合创新:CNN+LSTM在深度学习中的高效应用,助力科研发表高影响因子文章!
  • Linux之文件和目录类命令详解(2)
  • 在 Windows 11 中使用 MuMu 模拟器 12 国际版配置代理
  • Unity3D高级编程
  • 离线语音识别自定义功能怎么用?
  • C#预处理器指令#if和#endif:掌握条件编译的艺术
  • 使用 Vision 插件让 GitHub Copilot 识图问答