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);
  })
}
相关推荐
麦当_1 分钟前
SwipeMultiContainer 滑动切换容器算法指南
前端·javascript·算法
星斗大森林4 分钟前
Flame游戏开发——噪声合成、域变换与阈值/调色映射的工程化实践(2)
前端
用户31506327304874 分钟前
使用 vue-virtual-scroller 实现高性能传输列表功能总结
javascript·vue.js
星斗大森林5 分钟前
flame游戏开发——地图拖拽与轻点判定(3)
前端
samonyu5 分钟前
fnm 简介及使用
前端·node.js
bug_kada6 分钟前
玩转Flex布局:看完这篇你也是布局高手!
前端
前端小巷子38 分钟前
JS打造“九宫格抽奖”
前端·javascript·面试
潘小安40 分钟前
『译』资深前端开发者如何看待React架构
前端·react.js·面试
李昊哲小课1 小时前
HTML 完整教程与实践
前端·html
GISer_Jing1 小时前
React 18的createRoot与render全面对比
前端·react.js·前端框架