2009-06-10 94 views
24

私はそれにPDFが埋め込まれたWebページを持っています。このコードは、Acrobatのプラグインを実行したときに、よく知られた印刷ダイアログを開きます埋め込みPDFをサイレント印刷

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(); 
    } 
} 

:私は、印刷のために、このJavaScriptコードの私のPDFを持って

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

:私のコードは次のようになります。

PrintDialog

つの質問:

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

私のシステムについて少し詳細情報:

OS:のWindows XP

ブラウザ:のInternet Explorer 7

PDFプラグイン: Acrobat Readerが9

+0

@gideonが、これはすなわちエラーウェブページエラーの詳細 メッセージを与える... IE8のFFまたはクロームでは....動作しません。 5 コード:0 URI ます:http:私は警告文書がロードされた後もポップアップ維持し続けTYPEOF場合内のアラート()に入れた場合 //localhost/mpdf/pdf.php –

答えて

18

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

+0

感謝のおかげで、その企業のイントラネットのためのインターネットのために、彼らは信頼しなければならないではありません! :-)あなたはこのActiveXに私を指摘できますか?私はそれを評価します。 – sourcerebels

+0

私は彼の意見は、ブラウザが静かな印刷を許可すればセキュリティホールになるだろうと考えていたと思います。したがって、ブラウザ/プラグインではこれが許可されていない可能性があります。 – JohnFx

+0

このソリューションが承認されて以来、テクノロジはかなり変更されています。いくつかの静かな印刷ソリューションがあります。その中には、要望どおりURLで静かにPDFを印刷するものがあります。 http://stackoverflow.com/questions/27057816 – tresf

1

印刷する前に実際に待つ必要があるのだろうか - あなたのために印刷ジョブを処理しませんか?そして、現代のブラウザでは、その確認ダイアログなしで印刷することはできません(以前は古くなっていたブラウザーがありました)。

+0

こんにちはArjan、 早速お返事をいただきありがとうございます。 PDFファイルがロードされる前に.printメソッドを呼び出すと、「このメソッドはこのオブジェクトに対して許可されていません」というようなJavascriptエラーが発生します(私はスペイン語でエラーメッセージを受け取ります)。私はPDFがブラウザによって印刷されていないことを考えるあなたの二apreciationで は、Acrobatのプラグイン:-) – sourcerebels

+0

により印刷されるしかし、そのプラグインは右、誰のブラウザに存在するだろうか?もしそうなら、私はその確認が消えることを期待していません。あなたのPDFが読み込まれる前にbody要素のonloadイベントが発生しますか? – Arjan

+0

ああ、Internet Explorerが同様に埋め込むためのonload()をサポートしているように私には思える:http://msdn.microsoft.com/en-us/library/cc197055(VS.85).aspx – Arjan

1

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

4

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

<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();" /> 

これは、印刷ダイアログをバイパスし、デフォルトのプリンタに直接送信します。 nullまたはオブジェクトではありません ライン「NULL」::26 チャー何らかの理由で

+5

私はFFまたはSafariで動作するように、このメソッドを取得することができませんでした。このIEだけですか? – Karl

+0

100万回ありがとう。それはIE9で完璧に動作します。あなたは私を救いました!!! –