Microsoft Edge无法使用javascript print()打印PDF

时间:2019-02-12 12:04:12

标签: javascript pdf iframe printing microsoft-edge

我正在使用Microsoft Edge 41.16299.402.0。

我想使用iframe嵌入PDF blob,并希望使用contentWindow.print()直接显示打印机对话框。

在其他浏览器中一切正常,但在Microsoft Edge中无法正常工作。

错误消息显示为“错误:意外调用方法或属性。”

有人知道如何解决这个问题吗?

下面是我的代码:

    let loading = document.createElement("div");
    loading.id = "printLoading";
    loading.style.cssText = 'position: fixed;width: 100%;height: 100%;z-index: 999;background: rgba(6,6,6,0.3);top: 0;left: 0;';
    document.body.appendChild(loading);


    var iframe = document.getElementById("printIframe");
    if (iframe != null) {
        document.body.removeChild(iframe);
    }
    iframe = document.createElement("iframe");

    iframe.id = 'printIframe';
    iframe.style.display = 'none';

    console.log("pdfBlob", pdfBlob)
    document.body.appendChild(iframe);
    iframe.src = URL.createObjectURL(pdfBlob);
    let timeOut = 0;
    var inter = window.setInterval(function () {
        try {
            if (iframe.contentWindow.document.readyState === "complete") {
                document.getElementById("printIframe").contentWindow.print();
                window.clearInterval(inter);
                let loading = document.getElementById("printLoading");
                if (loading != null) {
                    document.body.removeChild(loading);
                }
            }
        } catch (error) {
            timeOut += 100;
            if(timeOut>5000){
                window.clearInterval(inter);
                let loading = document.getElementById("printLoading");
                if (loading != null) {
                    document.body.removeChild(loading);
                }
                console.log(error);
            }
        }
    }, 100);

0 个答案:

没有答案