2009-07-08 79 views
21

私は、Webベースのアプリケーションのためのダイアログボックスを表示せずに印刷物を直接送信できる機能を作成しました。プリント、シンプル!なく、私のために:(。ブラウザから直接印刷する印刷ポップアップウィンドウなしで

してください、最高のオプションとどのように私は(技術)それを書くべきであるものをお勧めします。

提案して下さい!

感謝。

EDIT :

+0

は、私はすでにそのようなオプションは、ActiveXコントロールを作成することにより、IEのために可能であることをpreassumedていた()印刷()ではなくwindow.printを使用してください。しかし、これはvbscriptでもできることを覚えていませんでした。幸運を得て、これを見つけました: http://msdn.microsoft.com/en-us/library/ms976105.aspx 私はまだ試していませんが、これは私に役立ちます私の手はactiveXから汚れていた –

+0

私はこのスレッドが超古いことを知っています。しかし、誰かが見つけようとしています。https://github.com/apinprastya/pulas – Apin

+0

他のブラウザの印刷ソリューションがあります:http://stackoverflow.com/a/28783269/3196753 – tresf

答えて

13

他の ブラウザでは解決策が見つかりませんでした。私がこの質問を投稿したとき、IEは に優先順位があり、喜んで が見つかりました。他のブラウザ(firefox、safari、opera)の解決方法がある場合は、ここで共有してください。 おかげさまで

VBScriptがはるかに便利VB6の上またはC#/ VB.NETのActiveXを作成するよりもです。今

<script language='VBScript'> 
Sub Print() 
     OLECMDID_PRINT = 6 
     OLECMDEXECOPT_DONTPROMPTUSER = 2 
     OLECMDEXECOPT_PROMPTUSER = 1 
     call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1) 
End Sub 
document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>" 
</script> 

、呼び出し:

<a href="javascript:window.print();">Print</a> 

がポップアップ印刷ウィンドウなしで印刷を送信します。

+0

Javascriptで全く同じコードを実装しようとしましたが、うまくいきませんでした。 VBScriptでのみ。なぜVBScriptでは動作しますが、Javascriptでは動作しませんか? –

+0

@ Jordao私は上記の設定変数はvbscriptのメンバーだと思います。ここでは、上記のスクリプトで主にやっているのは設定変数をリセットすることです。これはちょっとあなたの質問の本能です。 –

+0

参照する変数は単なる定数です。彼らはJavascriptで同じように動作するはずです。 –

1

これは可能ではないと思われます。表示されるダイアログボックスでは、印刷するプリンタを選択することができます。アプリケーションでクリックして印刷するだけでなく、ユーザーが印刷ボタンをクリックすることも可能ですが、コンピュータには2台のプリンタが接続されています。または、おそらく、そのユーザーは25台のプリンタを備えたオフィスビルで作業しています。このダイアログボックスが表示されていないと、コンピュータはどのプリンタに印刷するのかをどのように知っていますか?

+0

ActiveXについてユーザーのデフォルトプリンタでプリントを送信するIEのコントロール。これはかなりやりやすいようです。 しかし、そのようなactiveXを作成するための努力の時間を投資することは、IEユーザーだけに機能を提供することは正当化されません。 –

+0

Zachary、上記のスクリプトは、ポップアップウィンドウを表示せずに、デフォルトのプリンタマシンで印刷コマンドを送信します。しかしこれはIE専用です。私はこれが私たちが持っていた疑問に答えることを願っています:) –

+0

ああ、私はVBScriptを使用するとは思わなかった。偉大な、Ramiz。 IEのみを使用している場合は、完全に設定されています:D –

-3

これはうまくいくはずです。自分で試してみました。 falseの代わりにTrueを渡すと、印刷ダイアログが表示されます。

this.print(false); 
+0

Javaスクリプトでブール値のパラメータを使用できるprint()メソッドはありません。 –

+0

これを行うことができたとしても、専有的な理由から私は実装しません。その特定のアプリケーションが特定のサブセットの人々によって仕事で使用されていない限り。 たとえ自分のプリンタがページを訪問して印刷するだけで、何を印刷したいのかという確認がなくても、自動的に印刷するのであればどうでしょうか? 1.私は印刷したいかどうか尋ねられていないので、ウイルスの可能性があると思います。 2.私は人々のマシンで無数の論文を無駄にするでしょう。 15ページのレポートのうち1ページしか必要ない場合はどうなりますか? End LESSION:印刷プロトコルを使用せずに印刷しないでください。 – Spoo

3

AttendStarは、印刷ダイアログボックスを抑制し、ほとんどのバージョンのFirefoxのすべてのヘッダーとフッターを削除する無料のアドオンを作成しました。その機能により

https://addons.mozilla.org/en-US/firefox/addon/attendprint/

あなたに$( 'IMG')を使用することができますjqprint(); jqueryのjqprintは、Webアプリケーションから自動的に呼び出されたイメージのみを出力します。

3

IE9は、IE7やIE8 doのようにprint()VBScriptを呼び出してwindow.print()を呼び出すことをサポートしなくなり、window.print()は常にIE9の印刷ダイアログを起動します。

修正はかなり簡単です。 onclickイベントでwindow.print()の代わりにPrint()を呼び出すだけで済みます。

私は修正コードを別の質問の答えで説明しています。作業コードの例では、少し修正されたHTML構文(可能な限り作業コードとしてテストされています)が掲載されています。

あなたはここでそのサンプルコードを見つけることができます。

Bypass Printdialog in IE9

0

this.print(偽);

Chrome、Firefox、IEでこれを試しました。 FirefoxとIEのみで動作し、既定のプリンタ(デフォルトの印刷設​​定)を使用し、PDFをレンダリングするときにのみ機能します(Safe Read Modeを無効にしてFoxit Readerを使用します)。 Chromeは印刷ダイアログと、HTMLページをレンダリングするときの他のブラウザを表示します。

0

IEブラウザの場合、「VBScriptソリューション」が機能します。 Bypass Printdialog in IE9で@purefusionで述べたように

しかし、

関連する問題