Javascript 如何显示wcf服务返回的pdf流的打印选项?

Javascript 如何显示wcf服务返回的pdf流的打印选项?,javascript,pdf-generation,Javascript,Pdf Generation,我的wcf服务创建一个pdf流并返回它,通过ajax调用,我正确地处理了新窗口中的显示和pdf文件的下载 我需要添加一个选项,直接显示文档的打印选项。 我尝试使用iframe,但文档预览没有按预期正确显示pdf 此代码在下载时运行良好: var blob = b64toBlob(base64PDF, { type: 'application/pdf;' }); var link = document.createElement('a'); link.href = wind

我的wcf服务创建一个pdf流并返回它,通过ajax调用,我正确地处理了新窗口中的显示和pdf文件的下载

我需要添加一个选项,直接显示文档的打印选项。 我尝试使用iframe,但文档预览没有按预期正确显示pdf

此代码在下载时运行良好:

    var blob = b64toBlob(base64PDF, { type: 'application/pdf;' });
    var link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = f + ".pdf";
    link.click();
这是我试图用来将文档发送到打印机的代码:

var blob = b64toBlob(base64PDF, { type: 'application/pdf;' });
var iUrl = window.URL.createObjectURL(blob);
iUrl.download = f + ".pdf";
printPdf(iUrl);

function printPdf(url) {

    var iframe = this._printIframe;
    if (!this._printIframe) {
        iframe = this._printIframe = document.createElement('iframe');
        document.body.appendChild(iframe);

        iframe.style.display = 'none';
        iframe.onload = function () {
            setTimeout(function () {
                iframe.focus();
                iframe.contentWindow.print();
            }, 1);
        };
    }

    iframe.src = url;
}
我还尝试了一些其他的方法,这些方法都不是更好的

var blob = b64toBlob(base64PDF, { type: 'application/pdf;' });
var iUrl = window.URL.createObjectURL(blob);
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = iUrl;
iframe.onload = function () {
    setTimeout(function () {
        iframe.focus();
        iframe.contentWindow.print()
    }, 1);
};

document.body.appendChild(iframe);
这段代码打开了打印窗口,但文档看起来是错误的,我基本上理解为:

由于我的pdf流是base64字符串,我想我可以直接创建blob作为base64,所以我尝试了这段代码

var blob = new Blob([base64PDF], { type: 'application/pdf;base64,' })
var iUrl = window.URL.createObjectURL(blob);
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = iUrl;
iframe.onload = function () {
    setTimeout(function () {
        iframe.focus();
        iframe.contentWindow.print()
    }, 1);
};

document.body.appendChild(iframe);
现在什么也没有发生,我没有得到打印预览页面,但在控制台中我得到“资源被解释为文档,但使用MIME类型应用程序/pdf传输:”