我有一个Web应用程序(例如,运行本地运行(:http://localhost:8080:http://localhost上的后端:59922。还有一个服务可以返回PDF文件,例如http://myserver/pdfservice/12345.pdf。我正在尝试在新窗口中打开PDF文件,并调用打印对话框:
let window = window.open("http://myserver/pdfservice/12345.pdf");
window.print();
但是出现错误:
Uncaught DOMException: Blocked a frame with origin "http://localhost:8080" from accessing a cross-origin frame.
如果从http://localhost:59922打开窗口,则存在相同的问题。我什至将标题"Access-Control-Allow-Origin" = "*"
添加到响应中,但没有帮助。我在这里发现有关iFrame的答案,但我没有任何iframe。
要执行此操作,首先您需要像Adobe Acrobat一样在PC上安装PDF查看器然后,确保为放置PDF文件的文件夹设置适当的权限。为了解决此错误,您可能需要避免将PDF文件打开到弹出窗口中,让它在同一页面中打开,
也不要从根文件夹打开PDF确保您在该文件夹上的PDF文件,并且再次不要忘记设置权限。
这是示例:
<object height="950" data="sample-report.pdf" type="application/pdf" width="860">
<p>It appears you don't have a PDF plugin for this browser.
No biggie... you can <a href="sample-report.pdf">click here to
download the PDF file.</a>
</p>
</object>
将PDF文件打开到特定页面要将HTML链接定为PDF文件中的特定页面,请在链接URL的末尾添加#page = [页码]。例如,此HTML标签打开了名为myfile.pdf的PDF文件的第4页:
注意:如果您在链接中使用UNC服务器位置( servername 文件夹(,请使用以下部分中的过程将链接设置为打开到设置目标的链接。如果使用包含本地硬盘驱动器地址的URL(C:文件夹(,则无法链接到页码或设置目的地。使用Adobe Acrobat 7.0产品,仅当您使用HTTP或HTTPS位置时,指向页码的链接才能起作用。UNC服务器位置仅在您使用本文档以下部分中概述的设定目的地方法时才有效。