我编写了将pdf blob显示到iframe屏幕上的代码,但我也希望它能打印。除了IE11,我在所有浏览器中都可以使用此工具。有人知道那里的解决方案吗?我读了一些关于execCommand的地方,但这似乎也不起作用。
const printElem = (invoice) => {
const origiframe = document.querySelector('iframe');
if (origiframe) {
origiframe.remove();
}
const iframe = document.createElement('iframe');
iframe.src = invoice;
iframe.name = 'pdf-frame';
iframe.id = 'pdf-frame';
iframe.style.display = 'none';
iframe.style.visibility = 'hidden';
document.body.appendChild(iframe);
window.frames['pdf-frame'].print();
}
更新:我应该能够使用类似以下的内容来使打印在所有浏览器上都能使用,但是语法不清楚:
window.frames['pdf-frame'].document.execCommand('print',false,null);
UPDATE2 :我也尝试使用以下内容,但仍然没有骰子。有人对为什么catch部分在IE11中不起作用有任何想法?
try {
window.frames['pdf-frame'].print();
} catch(e) {
window.frames['pdf-frame'].document.execCommand('print',false,null);
}
答案 0 :(得分:1)
如果您尝试此操作?
var target= document.getElementById("myFrame");
try {
target.contentWindow.document.execCommand('print', false, null);
} catch(e) {
target.contentWindow.print();
}