1

iframe を使用して JavaScript で PDF ファイルを印刷するコードを次に示します。しかし、何も起こっていないので印刷できませんが、このコードはGoogle Chromeで完全に機能しています。IE8では動作しません。ContentLoaderDiv は html 分割です。私を助けてください..

Adobe Reader の印刷ダイアログの代わりに Java スクリプトを使用して印刷するアプリケーションから PDF ドキュメントを印刷すると、ブラウザの印刷ダイアログが呼び出されます。

誰もこの問題を見たことがありますか?ブラウザの印刷ダイアログの代わりに Adob​​e Reader のプリンタ ダイアログを呼び出す方法は?

 function printPdf() {
        var ContentLoaderDiv = document.getElementById('ContentLoaderDiv');
        ContentLoaderDiv.innerHTML = "";
        ContentLoaderDiv.innerHTML = '<div id="pdfdiv" style="position: relative;"><iframe id="frame1"  height="800" width="700" src="' + document.getElementById("<%= hdnPDFPathForObject.ClientID  %>").value + "print.pdf#scrollbar=1&toolbar=1&statusbar=0&messages=0&navpanes=1" + '"' + " /></iframe></div>";
        frame1.focus();
        frame1.print(); 

}

4

2 に答える 2

5

これを試してください:

function PdfUtil(url) {

    var iframe;

    var __construct = function(url) {
        iframe = getContentIframe(url);
    }

    var getContentIframe = function(url) {
        var iframe = document.createElement('iframe');
        iframe.src = url;
        return iframe;
    }

    this.display = function(parentDomElement) {
        parentDomElement.appendChild(iframe);
    }

    this.print = function() {
        try {
            iframe.contentWindow.print();
        } catch(e) {
            throw new Error("Printing failed.");
        }
    }

    __construct(url);
}

そして、次のように使用できます。

var pdf = new PdfUtil(PDF_URL);
pdf.display(document.getElementById('placeholder'));

document.getElementById('printBtn').onclick = function() {
    pdf.print();
}

明らかに、PDF_URLここには「定数」がありますが、あなたの場合はおそらく生成されるはずです。

IE8 と Chrome で完全に動作します (他のブラウザでも動作するはずです)。また、OO アプローチにより、保守や再利用がはるかに容易になります。すべてのニーズを満たすには、実際のロジックをわずかに変更する必要がある場合があります。

于 2013-09-19T13:42:03.333 に答える