web-dev-qa-db-ja.com

印刷ポップアップウィンドウなしでブラウザから直接印刷

主題で述べたように、ダイアログボックスを表示せずにユーザーが直接印刷を送信できるようにするWebベースのアプリケーションの機能を作成する必要があります。私のためではない :(。

最良の選択肢は何か、それをどのように書くべきか(技術)を提案してください。

提案してください!

ありがとう。

編集:印刷はユーザーのデフォルトプリンターで送信する必要があります。

22
Ramiz Uddin

他のブラウザの解決策が見つかりませんでした。この質問を投稿したとき、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>

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

16
Ramiz Uddin

IE9はIE7やIE8のようにwindow.print()を呼び出してPrint()VBScriptをトリガーすることをサポートしなくなったため、window.print()は常にIE9の印刷ダイアログをトリガーします。

修正は非常に簡単です。 onclickイベントでwindow.print()の代わりに、Print()自体を呼び出すだけです。

別の質問への回答で修正をより詳細に説明しました。実際に動作するコード例では、HTML構文が少し更新されています(動作中のコードとしてテストされている間は可能な限り)。

サンプルコードは次の場所にあります。

IE9のバイパスPrintdialog

3
purefusion

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

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

この機能を使用すると、$( 'img')。jqprint();を使用できます。 jqueryのjqprintは、Webアプリケーションから自動的に呼び出される画像のみを印刷します。

3
Jon

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

1
Zachary Murray

IEブラウザの場合、「VBScriptソリューション」が機能します。

しかし、 IE9のPrintdialogをバイパス で@purefusionが言及しているように、window.print()ではなくPrint()を使用します。

0
pprain

this.print(false);

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

0
DannyC