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);
  })
}
相关推荐
dme.2 分钟前
Javascript之DOM操作
开发语言·javascript·爬虫·python·ecmascript
Cacciatore->4 分钟前
React 基本介绍与项目创建
前端·react.js·arcgis
摸鱼仙人~6 分钟前
React Ref 指南:原理、实现与实践
前端·javascript·react.js
teeeeeeemo7 分钟前
回调函数 vs Promise vs async/await区别
开发语言·前端·javascript·笔记
贵沫末26 分钟前
React——基础
前端·react.js·前端框架
aklry37 分钟前
uniapp三步完成一维码的生成
前端·vue.js
Rubin9344 分钟前
判断元素在可视区域?用于滚动加载,数据埋点等
前端
爱学习的茄子1 小时前
AI驱动的单词学习应用:从图片识别到语音合成的完整实现
前端·深度学习·react.js
用户3802258598241 小时前
使用three.js实现3D地球
前端·three.js
程序无bug1 小时前
Spring 面向切面编程AOP 详细讲解
java·前端