プリンターに直接印刷
写真提供:デル
さまざまな Javascript フォーラムで頻繁に出てくるクエリの 1 つは、最初にページを表示せずにページを直接プリンタに送信する方法を尋ねるものです。 印刷ダイアログボックス .
ただそれを伝えるのではなく それはできません おそらく、そのようなオプションが不可能な理由の説明がより役立つでしょう。
ボタンを押したときに表示される印刷ダイアログ ボックス 印刷ボタン ブラウザまたは Javascript で window.print() メソッドの実行は、オペレーティング システムと、コンピューターにインストールされているプリンターによって異なります。
ほとんどの人は自分のコンピューターで Windows を実行しているため、最初にそのオペレーティング システムで印刷設定がどのように機能するかを説明しましょう。 *nix と Mac のオペレーティング システムは細部が若干異なりますが、全体的な設定は似ています。
印刷ダイアログ
Windows の印刷ダイアログ ボックスには 2 つの部分があります。これらの最初のものは、Windows API (アプリケーション プログラミング インターフェイス) の一部です。 API は、さまざまな DLL ( ダイナミック リンク ライブラリ ) Windows の一部であるファイル オペレーティング·システム .すべての Windows プログラムは、印刷ダイアログ ボックスの表示などの一般的な機能を実行するために API を呼び出すことができます (また、呼び出す必要があります)。これにより、すべてのプログラムで同じように機能し、DOS での印刷オプションのように異なる場所に異なるオプションが表示されなくなります。プログラムの日。また、Print Dialog API は、すべてのプログラムが同じプリンター ドライバーのセットにアクセスできるようにする共通のインターフェイスを提供します。プリンター メーカーは、プリンターを使用する個々のプログラムごとにプリンター用のドライバー ソフトウェアを作成する必要がありません。
プリンタ ドライバは、印刷ダイアログのもう半分です。さまざまなプリンターがページの印刷方法を制御するために使用する言語がいくつかあります (PCL5 や Postscript など)。プリンタ ドライバは、オペレーティング システムが理解する標準の内部印刷形式を、特定のプリンタが理解するカスタム マークアップ言語に変換する方法を印刷 API に指示します。また、印刷ダイアログに表示されるオプションを調整して、特定のプリンターが提供するオプションを反映します。
プリンターの操作
個々のコンピュータにはプリンタがインストールされていない場合もあれば、ローカル プリンタが 1 つある場合もあれば、ネットワーク経由で複数のプリンタにアクセスできる場合もあり、PDF またはフォーマット済みの印刷ファイルに印刷するように設定されている場合もあります。複数の「プリンター」が定義されている場合、そのうちの 1 つがデフォルトのプリンターとして指定されます。つまり、最初に表示されたときに印刷ダイアログに詳細を表示するプリンターです。
オペレーティング システムは、既定のプリンターを追跡し、コンピューター上のさまざまなプログラムに対してそのプリンターを識別します。これにより、プログラムは、最初に印刷ダイアログを表示せずにデフォルトのプリンターに直接印刷するように指示する追加のパラメーターを印刷 API に渡すことができます。多くのプログラムには、2 つの異なる印刷オプションがあります。印刷ダイアログを表示するメニュー エントリと、既定のプリンタに直接送信するツールバーの高速印刷ボタンです。
訪問者が印刷しようとしている Web ページがインターネット上にある場合、訪問者が使用できるプリンターに関する情報はほとんどありません。世界中のほとんどのプリンターは A4 用紙に印刷するように構成されていますが、プリンターがその既定値に設定されていることを保証することはできません。北米のある国では、A4 よりも短く幅の広い非標準の用紙サイズが使用されています。ほとんどのプリンタは、縦方向モードで印刷するように設定されています (狭い方向が幅ですが、長い方向が幅である横方向に設定されているものもあります。もちろん、すべてのプリンタには、上部に異なるデフォルトの余白があります。所有者が入ってすべての設定を変更し、プリンターを希望どおりに設定する前であっても、ページの、下部、および側面を変更します。
これらすべての要因を考慮すると、デフォルト設定のデフォルト プリンタが Web ページをごくわずかな余白で A3 に印刷するか、または大きな余白で (中央に郵便切手サイズの領域をわずかに残す) A5 で印刷するかを判断する方法はありません。ページの)。おそらく、ほとんどの場合、ページ上の印刷領域は約 16cm x 25cm (プラスマイナス 80%) であると想定できます。
印刷ニーズ
プリンターは潜在的な訪問者によって非常に異なるため (レーザー プリンター、インクジェット プリンター、カラーまたはモノクロのみ、写真の品質、ドラフト モードなどについて誰かが言及しましたか?)、印刷するために何をする必要があるかを知る方法がありません。適切な形式でページを出力します。おそらく、別のプリンターを持っているか、同じプリンター用の 2 番目のドライバーを持っていて、特に Web ページ用にまったく異なる設定を提供している可能性があります。
次に、何を印刷したいかの問題です。ページ全体を印刷したいのか、それとも印刷したいページの一部だけを選択したのか?サイトでフレームを使用している場合、すべてのフレームをページに表示されているとおりに印刷したいですか、各フレームを個別に印刷したいですか、それとも特定のフレームだけを印刷したいですか?
これらすべての質問に答える必要があるため、印刷ボタンを押す前に設定がすべて正しいことを確認できるように、何かを印刷したいときはいつでも印刷ダイアログが表示されることがほぼ不可欠です。ほとんどのブラウザでは、ブラウザのツールバーの 1 つに「高速印刷」ボタンを追加して、何をどのように印刷するかに関するデフォルトのブラウザ設定を使用してページをデフォルトのプリンタに印刷できるようにする機能も提供しています。
Javascript
ブラウザは、この多数のブラウザとプリンタの設定を Javascript で使用できるようにしません。 Javascript は主に現在の ウェブページ そのため、Web ブラウザーはブラウザー自体に関する最小限の情報を提供し、オペレーティング システムに関する情報はほとんど提供しません。 Javascript Javascriptは、Javascriptが意図していることを実行するためにそれらのことを知る必要がないためです。
基本的なセキュリティでは、Web ページを操作するために Javascript のようなものがオペレーティング システムやブラウザーの構成について知る必要がない場合、その情報を提供するべきではないと述べています。現在のページを印刷するために、JavaScript がプリンター設定を適切な値に変更できる必要があるわけではありません。これは、JavaScript の目的ではないためです。これは、印刷ダイアログの仕事です。したがってブラウザは、画面のサイズ、 ブラウザ ウィンドウの使用可能なスペース ページを表示するため、および Javascript がページのレイアウト方法を理解するのに役立つ同様のもの。現在の Web ページは、Javascript の唯一の関心事です。
イントラネット
もちろん、イントラネットはまったく別の問題です。イントラネットでは、誰もが ページへのアクセス 特定のブラウザー (通常は最新バージョンの Internet Explorer) を使用しており、特定の画面解像度と特定のプリンターへのアクセス権を持っています。つまり、イントラネットでは、印刷ダイアログを表示せずにプリンターに直接印刷できるのは理にかなっています。Web ページを書いている人は、それがどのプリンターで印刷されるかを知っているからです。
したがって、Javascript に代わる Internet Explorer (JScript と呼ばれる) には、ブラウザとオペレーティング システムに関する情報が、Javascript 自体よりもわずかに多く含まれています。イントラネットを実行しているネットワーク上の個々のコンピューターは、JScript を許可するように構成できる場合があります。 window.print() コマンドは、印刷ダイアログを表示せずにプリンターに直接書き込みます。この構成は、クライアント コンピューターごとに個別に設定する必要があり、Javascript に関する記事の範囲をはるかに超えています。
インターネット上のウェブページに関して言えば、あなたが設定できる方法は絶対にありません Javascript コマンド デフォルトのプリンターに直接送信します。訪問者がそうしたい場合は、ブラウザのツールバーに独自の「高速印刷」ボタンを設定する必要があります。