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);
  })
}
相关推荐
欧阳码农4 分钟前
我的AI自学路线,可能对你有用
前端·人工智能·后端
掘金安东尼6 分钟前
Next.js 原生实现 PWA 离线能力
前端·javascript·next.js
前端小巷子6 分钟前
从 Vue 2 到 Vue 3
前端·vue.js·面试
全宝13 分钟前
🚀前端必学!告别样式冲突:Shadow DOM 终极指南
前端·javascript·html
GDAL14 分钟前
v-model 入门教程
前端·javascript·vue.js
excel28 分钟前
前端进阶必看:你真的懂 DOM 吗?(超全总结)
前端
CF14年老兵32 分钟前
Python变量与内存:每个新手都需要的灵魂拷问
前端·python·trae
excel34 分钟前
你可能忽略的 DOM 扩展技巧:scrollIntoView、data-*、innerText 到性能优化
前端
n123523542 分钟前
Chrome 插件开发实战:从入门到上架的全流程指南
前端·chrome
掘金安东尼1 小时前
CSS 现状调查 2025
前端·css·面试