使用 HTML iFrame 代理和 Javascript 打印 S3 托管的私有 PDF - webkit 中的空白页面

Bra*_*ens 5 html javascript pdf iframe amazon-s3

我正在开发一个应用程序,我们使用PDFJS在应用程序内渲染 PDF。这些 PDF 托管在 S3 上,由于跨源问题,打印它们变得很棘手。

我们构建了一个特殊的视图,用作 iframe 代理,并托管在我们的服务器上(以消除跨域)。iframe 代理依次加载另一个具有实际 S3 PDF 内容的 iframe。

在 FireFox 中,我们可以通过运行以下命令成功打印代理 iframe:

var iframe = document.getElementById('printIframe') 
iframe.focus()
iframe.contentWindow.print()
Run Code Online (Sandbox Code Playgroud)

但是,在 Chrome 和 Safari 中,此方法会生成空白页面。有什么想法吗?

我们也进行了测试var pdfWindow = window.open( pdfUrl ); pdfWindow.print();,但这同样不成功。

编辑详细信息:

iframe 代理代码非常简单。

我们正在托管iframe_proxy.html?path-to-s3-file.pdf,它像这样填充嵌套的 iFrame 。

<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
    html,
    body,
    iframe {
        display: block;
        height: 100%;
        width: 100%;
        margin: 0;
        padding: 0;
        border-style: none;
    }
    </style>
</head>
<body>
    <iframe frameborder="0" height="100%" src="path-to-s3-file.pdf" width="100%"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)