js解决pdf使用iframe打印报跨域错误问题

报错如下:

Uncaught DOMException: Failed to read a named property 'print' from 'Window': Blocked a frame with origin "https://xxxx.com" from accessing a cross-origin frame.

at iframe.onload (:10:26)

解决方法:

把 pdf 转 blob 二进制数据, 通过 createObjectURL 生成本地对象 url, 在创建 iframe 调用打印接口

复制代码
printPDF()
function printPDF() {
  fetch('https://xxxxx.com/xxxx.pdf')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    } 
    return response.blob(); // 获取二进制数据
  })
  .then(blobData => {
      // 替换这里的 PDF_URL 为你要打印的 PDF 文件链接
      const PDF_URL = URL.createObjectURL(blobData);
    
      // 创建一个隐藏的 iframe 元素
      const iframe = document.createElement('iframe');
      // 等待 PDF 加载完成后进行打印
      iframe.onload = function() {
        iframe.contentWindow.print();
      };
      iframe.style.display = 'none';
      iframe.src = PDF_URL;
    
      // 将 iframe 添加到页面中
      document.body.appendChild(iframe);
  })
}
相关推荐
浩星13 小时前
react的框架UmiJs(五米)
前端·javascript·react.js
子醉15 小时前
推荐一种适合前端开发使用的解决本地跨域问题的办法
前端
Niyy_15 小时前
前端一个工程构建多个项目,记录一次工程搭建
前端·javascript
xiangxiongfly91516 小时前
CSS link标签
前端·css
快乐非自愿16 小时前
常用设计模式:工厂方法模式
javascript·设计模式·工厂方法模式
岁月宁静17 小时前
AI 多模态全栈应用项目描述
前端·vue.js·node.js
十年磨一剑~17 小时前
html+js开发一个测试工具
javascript·css·html
nn_(nana)18 小时前
修改文件权限--- chmod ,vi/vim,查看文件内容,yum-软件包管理器,systemctl管理系统服务
前端
汪汪队立大功12318 小时前
JavaScript是怎么和html元素关联起来的?
开发语言·javascript·html