我正在尝试从网页上打印动态生成的PDF。
var $iframe = $('<iframe>');
$iframe.appendTo('body');
$iframe.load(function() {
var iframe = $iframe[0];
var result = iframe.contentWindow.document.execCommand("print", false, null);
if (!result) iframe.contentWindow.print();
$.remove($iframe);
});
$iframe.attr('src', dataUrl);
execCommand()给出错误消息:
Uncaught SecurityError:阻止具有原点的帧 “http://localhost:2520”访问具有原点“null”的帧。 请求访问的帧具有“http”协议,帧为 access具有“数据”协议。协议必须匹配。
另外,设置src attr会发出警告:
资源被解释为文档但使用MIME类型application / pdf传输:
dataUrl如下所示:
data:application/pdf;base64,JVBERi0xLjQKJdP...
编辑:@Mike C
我可以创建iframe并显示pdf,但是当我打印时,它是空白的。
<style type="text/css" media="print">
body * { display:none }
iframe#theframe { display:block }
</style>
var $iframe = $('<iframe id="theframe" src="'+dataUrl+'"></iframe>');
$iframe.appendTo('body');
$iframe.load(function() {
setTimeout(function() {
window.print();
}, 1000);
});
答案 0 :(得分:1)
尝试使用window.open()
,document.write()
,setTimeout()
var popup = window.open("", "w");
var html = '<!doctype html><html><head></head>'
+ '<body marginwidth="0" marginheight="0" style="background-color: rgb(38,38,38)">'
+ '<embed width="100%" height="100%" name="plugin" src="data:application/pdf;base64,JVBERi0xLjQKJdP..." type="application/pdf">'
+ '<script>setTimeout("print()", 1000)</script></body></html>';
popup.document.write(html);