Microsoft Edge не может печатать PDF с использованием печати JavaScript () - PullRequest
0 голосов
/ 12 февраля 2019

Я использую Microsoft Edge 41.16299.402.0.

Я хотел бы использовать iframe для встраивания BLOB-объекта PDF и использовать 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);
...