web-dev-qa-db-ja.com

埋め込まれたサイレント印刷PDF

PDF=が埋め込まれたWebページがあります。私のコードは次のようになります。

<embed
    type="application/pdf"
    src="path_to_pdf_document.pdf"
    id="pdfDocument"
    width="100%"
    height="100%">
</embed>

PDFを印刷するための次のJavaScriptコードがあります。

function printDocument(documentId) {

    //Wait until PDF is ready to print    
    if (typeof document.getElementById(documentId).print == 'undefined') {

        setTimeout(function(){printDocument(documentId);}, 1000);

    } else {

        var x = document.getElementById(documentId);
        x.print();
    }
}

このコードが実行されると、Acrobatプラグインは既知の印刷ダイアログを開きます。このようなもの:

PrintDialog

2つの質問:

  • PDFがロードされ、印刷の準備ができていることを検出する方法を改善するには?
  • 印刷ダイアログを表示しないようにする方法は?

私のシステムについてもう少し情報:

OS: Windows XP

ブラウザ: Internet Explorer 7

PDFプラグイン: Acrobat Reader 9

24
sourcerebels

普通の古いJavaScriptで静かに印刷することはできません。プリンタで100000000ページすべての黒を印刷する方法を教えてください。良くない。静かに印刷し、Internet Explorerのみで動作するようにしたい場合は、それを実行できるActiveXコントロールがあります。これには、ページとユーザーがサイトを本当に信頼するために、より高いセキュリティ設定が必要です。

18
epascarello

これは、信頼できるイントラネット環境で可能です。

<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%">
        <param name="SRC" value="yourdoc.pdf" />
    </object>

<input type="button" ... onclick="pdfDoc.printAll();" />

これにより、印刷ダイアログがバイパスされ、デフォルトのプリンターに直接送信されます。

4
PushCode

印刷する前に実際に待つ必要があるのだろうか?印刷ジョブはあなたのためにそれを処理しませんか?そして、私は、その確認ダイアログなしで印刷できる最新のブラウザ(またはその問題のウェブサイト)がないことを本当に望みます(昔のブラウザはそれを使用していました)。

1
Arjan

Firefoxでこれを行うには、about:config。追加 print.always_print_silentおよびtrueに設定します。

1
mike