1

Java プログラムから印刷をテストしようとしています。私は現在持っています

 Socket s = new Socket(printer_ip, 9100);

 PrintWriter pw = new PrintWriter(s.getOutputStream());

 pw.println("This is a print test");

 pw.println("\n\n\n");

 pw.flush();

 pw.close();

 s.close();

プログラムはテキストをプリンターに印刷しますが、用紙を排出しません。?????? 他に何が欠けていますか?

flush() の後、入力が完了したことを認識し、close() の後にストリームを終了する必要があると考えました。

4

2 に答える 2

3

PrintWriterリテラルプリンターへの印刷用ではありません。出力デバイス (通常はコンソール) に文字を書き込むためのものです。コードサンプルよりも少し複雑なので、Java 印刷に関するこのチュートリアルを参照する必要があります。

于 2013-01-15T15:00:33.180 に答える
1

使用しているプリンターと、それに印刷するために使用するインターフェイスによって異なります。

まったく印刷できるという事実は、プリンターが ASCII テキストを印刷するモードになっていることを示しています。これは、昔のトラクター供給ドット マトリックス プリンターのすべてが機能していた方法ですが、最新のレーザーおよびインクジェット プリンターの機能ではありません。最新のプリンターは、行だけではなく、ページ全体を印刷します。

しかし、古いプリンター、またはそれを模倣したインターフェイスを使用している場合は、次の 2 つのいずれかを行う必要があります。

1 つは、ASCII コード 14 (または Control-L) である FORMFEED 文字をプリンターに送信する方法です。多くのプリンターは、その文字を使用して次のページに進みます。

もう 1 つの手法は、1 ページに何行あるのかを事前に把握し、印刷される行数を追跡し、ページを進めたいときに、余分な新しい行をプリンターに印刷して行を進めることです。ライン。

8.5 x 11 インチの用紙を使用している場合、標準の用紙とフォント サイズを備えたほとんどの一般的なプリンターは、1 ページあたり 66 行、または 1 インチあたり 6 行です。プリンタで確認してください。簡単なテストは、100 行の番号を印刷して、ページに何行あるかを確認するだけです。

この例では、4 行を印刷しました。次のページに進むには、さらに 62 行を印刷する必要があります。

どちらの手法にも目的と用途があります。FORMFEED は単純なコマンドであり、何も追跡する必要がないため便利ですが、プリンターがページの長さを「認識」する必要があることも意味します。

同じプリンターを使用してさまざまなサイズのフォームを印刷する場合、プリンターをさまざまなサイズにリセットすることは、ユーザーにとって苦痛になる可能性があります (プリンターは、世界で最高のユーザー インターフェイスを備えていることで知られていません)。コンピュータはページ サイズを認識しており、単純に行を進めます。これにより、フォームの交換がはるかに簡単になります。

于 2013-01-15T15:08:53.293 に答える