通过iframe打印pdf(跨域)

克拉克

我需要打印PDF ...但是出现错误

有解决方法吗?我只需要一键打印PDF文件

错误:

Uncaught SecurityError: Blocked a frame with origin "https://secure.domain.com" from accessing a frame with origin "https://cdn.domain.com". Protocols, domains, and ports must match.

代码:

var iframe = $('<iframe src="'+url+'" style="display:none"></iframe>').appendTo($('#main')).load(function(){
    iframe.get(0).contentWindow.print();
});
HiDeo

您要处理的错误与跨域保护和同源策略有关。

在您的情况下,如果将此iframe嵌套在另一个我们可以称为代理iframe的本地iframe中,则可以打印跨域iframe。

由于代理iframe是本地的并且具有相同的来源,因此您可以毫无问题地进行打印,并且还会打印跨域iframe。

参见以下示例:

index.html(容器)

$(function() {
  var url = 'proxy.html'; // We're not loading the PDF but a proxy which will load the PDF in another iframe.

  var iframe = $('<iframe src="' + url + '"></iframe>').appendTo($('#main'));

  iframe.on('load', function(){
    iframe.get(0).contentWindow.print();
  });
});

proxy.html(代理)

<body>
  <iframe src="http://ANOTHER_DOMAIN/PDF_NAME.pdf"></iframe>
</body>

使用此解决方案,您不再遇到跨域问题,可以使用print()函数。您需要处理的唯一事情是将PDF网址从容器传递到代理的方法,以及检测何时实际加载带有PDF的iframe的方法,但这取决于您使用的解决方案/语言。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过iframe打印pdf(跨域)

来自分类Dev

跨域postMessage,标识iFrame

来自分类Dev

从跨域iframe接收数据

来自分类Dev

通过Iframe上传,IE8 / 9访问被拒绝(跨域)

来自分类Dev

iFrame中的页面顶部-跨域

来自分类Dev

JavaScript跨网域iframe调整大小

来自分类Dev

跨域访问iframe内容的高度

来自分类Dev

jQuery跨域iframe高度问题

来自分类Dev

如何从iframe(跨域)访问onfocus事件?

来自分类Dev

iFrame中的页面顶部-跨域

来自分类Dev

跨域访问iframe内容的高度

来自分类Dev

选择对象和跨域iframe?

来自分类Dev

js跨网域到iframe

来自分类Dev

使用跨网域在iframe javascript中获取iframe属性

来自分类Dev

跨域通过POST发送FormData

来自分类Dev

从父级到子级iframe进行跨域通信

来自分类Dev

简单的iFrame不显示某些跨域页面

来自分类Dev

在跨网域的iframe中监听按键事件

来自分类Dev

从多级跨域iframe确定顶级窗口的网址

来自分类Dev

跨域iframe会导致Cookie出现问题(Rails)

来自分类Dev

使用PostMessages跨域iframe访问-访问被拒绝

来自分类Dev

如何跨多个iframe(同一域)创建点击事件?

来自分类Dev

.NET平台上跨子域调整IFRAME的大小

来自分类Dev

iframe跨网域调整大小无权控制

来自分类Dev

简单的iFrame不显示某些跨域页面

来自分类Dev

跨网域iframe-更改复选框状态

来自分类Dev

用户如何检索当前的iFrame URL(跨域)

来自分类Dev

如何根据跨网域的内容设置iframe高度?

来自分类Dev

使用PostMessages跨域iframe访问-访问被拒绝