  The Linux Printing HOWTO
  Grant Taylor <gtaylor+pht@picante.com>
  Version 3.30, 1999/11/19 06:00:35
  Japanese FAQ Project <JF@linux.or.jp>
  v3.30j1, 10 December 1999

  この Linux Printing HOWTO は、Linux (およびその他一般的なUNIX) で文書
  などを生成・プレビュー・印刷・ FAX する方法についての情報を集めたもの
  です。
  ______________________________________________________________________

  目次

  1. はじめに
     1.1 History
     1.2 Copyright

  2. どのように印刷するのか
  3. カーネルのプリンタデバイス
     3.1 lp デバイス (2.1.32 以前)
     3.2 parport デバイス (kernel 2.1.33 以降)
     3.3 シリアルデバイス

  4. サポートされているプリンタ
     4.1 PostScript
     4.2 非 PostScript
     4.3 どのプリンタが動くの?
        4.3.1 プリンタの互換性リスト
     4.4 プリンタの買い方

  5. どのスプールソフトウェアを使う?
  6. どのように動作するのか、基本
  7. どうやって設定するのか、基本
     7.1 伝統的な lpd の設定方法
     7.2 ファイルの許可制限

  8. 印刷ソフトウェアを入手する
  9. ベンダ(配布パッケージ)ごとの解決方法
     9.1 Red Hat
     9.2 Debian
     9.3 その他のディストリビューション

  10. Ghostscript.
     10.1 Ghostscript を起動する
     10.2 Ghostscript の出力を調整する
        10.2.1 出力の位置とサイズ
        10.2.2 ガンマ、ドットサイズ、その他

  11. ネットワーク越しのプリンタへの印刷方法
     11.1 Unix/lpd のホストに対して
        11.1.1 lpd を使って
        11.1.2 rlpr を使って
     11.2 Win95 や WinNT、LanManager、Samba のプリンタに対して
     11.3 NetWare のプリンタに対して
     11.4 EtherTalk (Apple) のプリンタに対して
     11.5 HP やその他のイーサネットプリンタに対して
        11.5.1 古い HP のプリンタに対して
     11.6 リモートプリンタに if を実行する
     11.7 Windows から
     11.8 Apple から
     11.9 Netware から

  12. Windows 専用プリンタ
     12.1 Ghostscript - Windows 変換ドライバ
     12.2 pbm2ppa プログラム
     12.3 Lexmarks

  13. ファックスを用いた印刷の方法
     13.1 ファックスモデムを使う
     13.2 遠隔印刷サービスを使う

  14. 印刷するブツを作る方法
     14.1 マークアップ言語(Markup languages)
     14.2 WYSIWYG 型ワープロ

  15. 印刷可能なものの画面上でのプレビュー
     15.1 PostScript
     15.2 TeX dvi
     15.3 Adobe PDF
  16. lpd の下でのシリアルプリンタ
     16.1 printcap の設定
     16.2 文字落ちする古いシリアルプリンタ

  17. クレジット
  18. 日本語訳について

  ______________________________________________________________________

  1.  はじめに

  この Printing HOWTO はあなたの Linux Box で印刷サービスを設定するため
  に必要となるような情報全てを含んでいるはずです。人生がそうであるよう
  に、マイクロソフトやアップルのクリックひとつだけですむ世界よりも多少難
  しいでしょうが、その分だけ柔軟性があり、大中規模の LAN(large LANs) の
  管理者にとっては確実に簡単であるはずです。

  このドキュメントはほとんどの人は前半部分ぐらいを読むだけで済むように構
  成されています。多くのより分かりにくく、また状況に依存した (situation-
  dependant) 情報は後半部分にあり、簡単に目次から探すことができますが、
  多くの方は 9 章や 10 章の情報が必要となるでしょう。

  ご存じの通りバージョン 3.x(このドキュメントのバージョンの事)は完全に書
  き直されましたので、前の版からの情報の多くは無くなりました。これは、以
  前の HOWTO は非常に大きく、印刷すると 60 ページにも及び、まるで死んだ
  亀の生涯を語るような長い長いお話になってしまったために意図的に行いまし
  た。このドキュメントから答えを見つけられなかった場合、a) Printing
  HOWTO Home Page <http://www.picante.com/~gtaylor/pht/> にある以前のバ
  ージョンを調べ、b) このドキュメントにあるべきものが抜けていることを私
  に教えてください。

  Printing HOWTO Home Page <http://www.picante.com/~gtaylor/pht/> は最新
  版のドキュメントを見つけるのに良い場所ではありますが、当然 Metalab
  (metalab.unc.edu) や近くの LDP ミラーサイトからも配布されます。

  1.1.  History

  この文章は 3 世代目(つまり 3 回目の大改訂)の Printing HOWTO です。
  PHT(Printing HowTo) の歴史はこのように綴られる。

  1. comp.os.linux での印刷に関する非常に多くの質問への回答として、 1992
     年に printing-howto を書いて投稿しました。これは HOWTO プロジェクト
     発足よりも数ヶ月前だったため、`howto' と呼ばれる最初の FAQ パンフ
     レット (FAQlet)となりました。この版は単なるテキストファイル(plain
     ASCII)でした。

  2. HOWTO プロジェクトに参加後、Printing-HOWTO は Brian McCauley
     <B.A.McCauley@bham.ac.uk> の Lpd FAQ とマージされました。私たちは 2
     年ほど、協力して PHT の共同執筆を行いました。いくつかは Karl Auer
     <Karl.Auer@anu.edu.au> の物も取り入れました。この時の PHT は
     TeXinfo で書かれていましたが、PS, HTML, ASCII, そして Info 形式でも
     入手できました。

  3. PHT はその後 1 年以上も放置されて痛んで腐ってしまい、その後他の人に
     文書のメンテナンスを引き継ぐことにも失敗した後、改定の話が持ち上が
     りました。現在の PHT は LinuxDoc DTD と SGML-Tools-1 パッケージを使
     用して SGML で書かれています。バージョン 3.27 からは、扱いやすいプ
     リンタ (companion printer)のサポートデータベースの要約(summary)が含
     まれています。 3.27 より以前はこの HOWTO に、プリンタ互換性リス
     ト(compatibility list)はありませんでした(!)。

  1.2.  Copyright

  This document is Copyright (c) 1992-1999 by Grant Taylor.  Feel free
  to copy and redistribute this document according to the terms of the
  GNU General Public License, revision 2 or later.

  (訳注: 読者の利便を考え日本語訳をしますが、原文の Copyright が優先しま
  す)

  このドキュメントは、Grant Taylor が著作権を有します((c) 1992-1999)。
  GNU General Public License revision 2(GPL2) 以降に従う限り自由にこのド
  キュメントをコピー及び再配布を行っても構いません。

  2.  どのように印刷するのか

  既に lpd を設定していてプリンタが使用可能になっているか、システム管理
  者が設定してくれているか、もしくはベンダが代わりに設定してくれていたの
  であれば、必要なのは lpr コマンドの使い方を学ぶことだけです。Printing
  Usage HOWTO Printing Usage HOWTO
  <http://metalab.unc.edu/LDP/HOWTO/Printing-Usage-HOWTO.html> がこれに
  ついて網羅しています。そして印刷キューを操作するいくつかのコマンドにつ
  いては既にご存知なことでしょう。

  しかし、新品のシステムやプリンタを持っていれば、印刷が可能になる前に何
  らかの方法で印刷サービスを設定する必要があるでしょう。

  3.  カーネルのプリンタデバイス

  パラレルポートのデバイスドライバは、全く異なるものが二つ存在していま
  す。あなたがどちらをお使いかは、そのカーネルのバージョン (uname -a と
  コマンドを打てばわかります) によります。ドライバの変更は Linux 2.1.33
  で行われました。

  これら二つのドライバには似ているところもあります。特に気をつけておくべ
  きは、PC BIOS の "Plug and Play" を無効にしておかないと、 Linux はパラ
  レルポートを検知しない、ということでしょう (驚くことじゃありません。
  Windows などでの非 PCI デバイスの PnP 接続追跡情報はある意味災厄でした
  から...)。

  3.1.  lp デバイス (2.1.32 以前)

  2.1.32 以前のカーネルでは、lp デバイスを組み込むかロードしておけば (ロ
  ードされてれば cat /proc/devices の出力に lp デバイスが入るはず)、
  /dev/lp0, /dev/lp1, /dev/lp2 のうちのどれか (あるいは複数個) が使えま
  す。これらのデバイスは動的に割り当てられるものでは *ありません*。そう
  ではなく、それぞれが特定のハードウェア I/O アドレスに関連づけられてい
  るのです。つまり一番目に接続したプリンタが lp0 となるか lp1 となるかは
  ハードウェアしだいです。両方試してみましょう。

  何人かのユーザからの報告によれば、単方向 (unidirectional) 用の古いプリ
  ンタケーブルを使っていると、双方向 (bidirectional) の lp ポートが認識
  されないことがあるそうです。ちゃんとしたケーブルを使っているか確かめて
  おきましょう。

  plip ドライバと lp ドライバは、一つのポートに同時に使うことはできませ
  ん (2.0 以下では)。しかし、必要に応じてどちらかのドライバを選択してロ
  ードすることは可能です。これは手動で、あるいは 2.x (及び 1.3.x の後期)
  カーネルなら kerneld を使って行うことができます。割り込みなどを注意深
  く設定すれば、おそらく plip を一つのポートで、 lp を別のポートで動作さ
  せることが可能でしょう。こいつをうまいことコマンドラインだけで成功させ
  た例があるようなら、私はその話がとても聞きたいです。

  さて、世の中には tunelp という小さなユーティリティがあります。これを
  root 権限で用いれば、 Linux 2.0 lp デバイスに対して、割り込みの利用法
  やポーリングレートなどのオプションを調整することができます。

  lp ドライバがカーネルに直接組み込まれているときは、カーネルは lp= オプ
  ションを受け付けるようになり、ドライバが利用する割り込みと I/O アドレ
  スを設定できます。例えば LILO や LOADLIN のコマンドラインを用いて、ド
  ライバの使うポートアドレスと割り込みを設定できます。

       書式:   lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]

       例;     lp=0x378,0 または lp=0x278,5,0x378,7 など。

  この機能を使ったときは、必要となるポートを *ぜんぶ* 指定しなければいけ
  ません。デフォルトで有効となるポートはありません。なお lp=0 とすれば組
  み込みのドライバを無効にすることもできます。

  モジュールとしてロードされる場合には、 I/O アドレスと割り込みを insmod
  のコマンドラインから (あるいは /etc/conf.modules で kerneld に設定し
  て) 通常のモジュール引数の指定方法で設定できます。パラメータは
  io=port0,port1,port2 と irq=irq0,irq1,irq2 です。より詳しいことを知り
  たい場合は insmod のマニュアルページを読んでください。

  必要なときに標準のポート番号を思い出せない人 (わたしもそうです) のため
  にコメントを。二つは上記の二番目の例に出ています。もう一つ (lp0) は
  0x3bc にあります。標準の割り込み、に関しては、ちょっと知識がありませ
  ん。

  Linux 2.0 パラレルポートドライバのソースコードは
  /usr/src/linux/drivers/char/lp.c にあります。

  3.2.  parport デバイス (kernel 2.1.33 以降)

  カーネル 2.1.33 から (カーネル 2.0.30 用のパッチもありますが)、 lp デ
  バイスは新たに導入された parport デバイスの単なるクライアントになりま
  した。 parport デバイスが追加されたことによって、以前の lp デバイスド
  ライバにあった多くの問題が是正されました。 lp が他のドライバとポートを
  共有できるようになりましたし、利用できるパラレルポートをデバイス番号に
  動的に割り当てることも可能になりました (以前は I/O アドレスとポート番
  号の関係は固定されていました)。

  parport デバイスの登場によって、 Zip ドライブや Backpack CD-ROM, ディ
  スクなど、新たなパラレルポートデバイスが何でも利用できるようになりまし
  た。これらのうちのいくつかは 2.0 カーネルでもバージョンによっては利用
  できます。 web を捜し回ってみてください。

  お気づきになると思いますが、印刷に関連する主な違いは、 parport ベース
  のカーネルでは lp デバイスがパラレルポートに動的に割り当てられる、と言
  うことです。ですから Linux 2.0 で lp1 だったポートが Linux 2.2 では
  lp0 になるかもしれません。 lp ドライバのカーネルから parport ドライバ
  のカーネルにアップグレードするときは、この点のチェックを忘れないように
  してください。

  このデバイスについて一番ありがちな問題は、設定のミスから起こるようで
  す:

     ディストリビューション
        Linux ディストリビューションのなかには、きちんと設定された
        /etc/modules.conf (ないしは /etc/conf.modules) が入っていないた
        め、ドライバが、必要となる場面で、ちゃんと読み込まれないようなも
        のがあります。 modules.conf の正しい `魔法の' 設定行は、最近の
        modutils ではこんなふうになります:

          alias           /dev/printers   lp
          alias           /dev/lp*        lp
          alias parport_lowlevel parport_pc

     BIOS
        パラレルポートを Plug and Play にしようとする PC の BIOS はいっ
        ぱいあります。でもこれは、「いつだってそこにある」完璧に単純なデ
        バイスに、無用な複雑さを植え付けるだけです。 Linux のドライバが
        パラレルポートを検出してくれない場合は、パラレルポート (``LPT1''
        となっている BIOS が多いです) の Plug and Play 設定を切ってくだ
        さい。正しい設定内容は、``legacy'' とか ``ISA'', ``0x378'' など
        です。 ``disabled'' にしてしまうのは、おそらく間違いでしょう。

  カーネルソースの Documentation/parport.txt を読むか、 parport web site
  <http://www.cyberelk.demon.co.uk/parport.html> に目を通してみてくださ
  い。

  3.3.  シリアルデバイス

  Linux ではシリアルデバイスには /dev/ttyS1 のような名前がつきます。
  stty ユーティリティを用いれば、シリアルポートの設定をインタラクティブ
  に閲覧・設定できます。 setserial を使うと、さらに高度な属性を制御で
  き、標準的でないポートに対して IRQ や I/O アドレスを設定することもでき
  ます。 Linux でのシリアルポートに対するより詳しい議論は Serial-HOWTO
  <http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html> にあるでしょう。

  遅いシリアルプリンタにフロー制御を使うと、プリントジョブが捨てられてし
  まうことがあります。これはおそらくシリアルポートのせいで、デフォルトの
  動作では送信されなかった文字を、ポートがクローズされた 30 秒後にバッ
  ファにから捨ててしまうからです。バッファは 4096 文字まで保持できます
  が、プリンタでフロー制御が使われており、かつプリンタの速度が遅くて、印
  刷を行ったソフトウェアがポートをクローズした後 30 秒の間にデータを受け
  切れない場合には、バッファの内容の末尾の部分が失われることになります。
  コマンド

       cat file > /dev/ttyS2

  を行って、短いファイルなら完全にプリントアウトされ、長いファイルでは尻
  切れになるようなら、おそらくこの状況にあります。

  30 秒のインターバルは setserial (バージョン 2.12 以降) の
  "closing_wait" コマンドラインオプションによって調整できます。通常マシ
  ンのシリアルポートは rc.serial というブートファイルから setserial を呼
  び出すことによって初期化されています。問題になっている印刷用シリアルポ
  ートへのこの setserial の実行を修正して、そのポートへの他のパラメータ
  の設定と同時に closing_wait も設定するようにすれば良いでしょう。

  4.  サポートされているプリンタ

  Linux のカーネル自体はシリアルかパラレルのコネクタに接続できるほとんど
  全てのプリンタをサポートしています。しかし (電気信号的には) Linux と会
  話ができるにも関わらず、利用することができないプリンタがあることに注意
  しないといけません。こういった互換性の無いプリンタは、一般的に
  ``Windows'' プリンタや ``GDI'' プリンタと呼ばれているものです。こう呼
  ばれるのは、プリンタの制御言語の一部または全て、そして印刷の仕組みにつ
  いての詳細な仕様がドキュメント化されていないためです。通常こういったプ
  リンタの販売者は、 Windows 用のドライバを供給し Windows ユーザのみに向
  けて販売して満足しています。これがこの種のプリンタが Windows 専用プリ
  ンタ と呼ばれる理由です。場合によっては販売者が NT 用、OS/2 用、その他
  OS 用のドライバを供給することもあります。

  これらのプリンタの多くは Linux 上では動作しません。動くものはわずか
  で、いくつかは少しだけしか動きません (通常は誰かがプリンタにデータを送
  る方法を解読したおかげです)。個々のプリンタについての詳細は後述するプ
  リンタサポートリストを参照してください。

  この中間に位置するプリンタもいくつかあります。例えば NEC のいくつかの
  モデルにはシンプルな標準的プリンタ言語である PCL が組み込まれているた
  め、 PCL を話せるソフトウェアからは 300dpi で印刷することができます
  が、 600dpi の最大解像度で印刷する方法は NEC しか知りません。

  もし既にこういった Windows 専用プリンタをお持ちの場合でも、 Linux から
  印刷する手段が無いわけではありません。でもそれらは洗練されているとはい
  いがたく、私自身は試したこともありません。Windows 専用プリンタについて
  は、第 12 章でもっと詳しく述べているのを参照してください。

  4.1.  PostScript

  Linux で動作するプリンタは数々ありますが、一番良い選択は PostScript を
  標準でサポートしているプリンタを買うことです。印刷が可能である Unix の
  ソフトウェアのほとんど全ては PostScript 形式で印刷データを出力するた
  め、当然 PostScript を直接サポートしているプリンタを使うのが望ましいわ
  けです。残念なことに、通常 PostScript はレーザープリンタ以外では装備さ
  れておらず、また高価なオプションであることがしばしばです。

  Unix のソフトウェア、そして出版業界では、一般的にプリンタ制御言語とし
  ては PostScript が標準となっています。これにはいくつかの理由があります
  -

     タイミング
        PostScript は、80年代のデスクトップ出版革命に大いに寄与した
        Macintosh とその完璧な相棒である Apple LaserWriter で組まれたシ
        ステムの一部として世に現れました。

     デバイスへの非依存性
        PostScript プログラムは、そのプログラムを変更することなしに、ピ
        クセルスクリーン、ベクタースクリーン、ファックス装置、その他ほと
        んど全ての種類の印刷装置に出力することができます。 PostScript の
        出力は、いかなる PostScript 装置を使っても、その装置の性能の範囲
        内で同じように表示されます。 PDF の出現以前は、複雑なドキュメン
        トをオンラインで交換するには PostScript が使われていました。この
        標準が "継続" しなかったのは、通常 "Windows" マシンには
        PostScript のプレピューアが付いていなかったのが唯一の理由です。
        そのため Adobe は PostScript にハイパーリンクと圧縮機能を付け加
        え、これを PDF と名付け、そのプレビューアを配布し、 "PDF蒸留" ツ
        ールの市場を生み出しました (この PDF 操作には Ghostscript の
        ps2pdf と pdf2ps プログラムも使用できます)。

     真のプログラミング言語
        PostScript は完全なプログラミング言語です。ほとんど全てのことを
        行なえるソフトウェアを記述することができます。これは、ドキュメン
        ト中に何度も何度も現れる複雑なもの、ロゴや背景の大きな "下書き"
        マークのようなものをプログラムの冒頭でサブルーチンとして定義する
        際に特に有用となります。

     オープンな仕様
        PostScript は一般に入手可能である様々な書籍(大きな書店で見つかる
        でしょう)によって仕様が公開されています。 Adobe が発明し、商業的
        な市場を支配する実装を供給していますが、 Aladdin のような他のベ
        ンダによって独自に開発された実装も存在します。

  4.2.  非 PostScript

  (より高額な) PostScript プリンタを購入する費用が捻出できなかったとして
  も、本物の PostScript プリンタの代わりとして利用できるフリーな
  PostScript のインタプリタである Ghostscript がサポートしているプリンタ
  ならどれでも使用することができます。 Ghostscript Home Page
  <http://www.cs.wisc.edu/~ghost/> にサポートされているプリンタと最新お
  よび開発中のドライバについての情報と現状のリストがあります。これは最新
  版の Ghostscript がサポートしているプリンタの一覧で、ほとんどの Linux
  ディストリビューションに含まれる Ghostscript は、ライセンスの都合上か
  らどうしても多少古い版となってしまうということに注意してください。幸い
  なことに、たいていの場合はパッケージ済の新しい Ghostscript を各ディス
  トリビューションの contrib エリアから入手することができるでしょう。
  Ghostscript サポートページを充実させるために、あなたのプリンタがうまく
  動いたか、または動かなかったかを質問に沿ってレポートしてくださることを
  お願いします。

  Adobe は "PrintGear" と呼ばれる新しいプリンタ言語を作りました。これは
  多少 PostScript の流れを汲みますが、PostScript との互換性は無い非常に
  単純化されたバイナリフォーマットの言語のようです。そして Ghostscript
  がこれをサポートするという話は聞いたことがありません。けれどもいくつか
  の PrintGear プリンタは、PCLのような他の言語もサポートするようで、これ
  らのプリンタは(もし PCL が組み込まれるのがプリンタ自体であって Windows
  のドライバ内でなければ)、Linux 上でも動作するでしょう。

  4.3.  どのプリンタが動くの?

  もしもあるプリンタを買いたいのなら、それが動くかをいくつかの場所で調べ
  ることができます。共同して更新されている Printing HOWTO プリンタデータ
  ベース <http://www.picante.com/~gtaylor/pht/printer_list.cgi>
  は、Linux のプリンタサポートに関しての総合的な一覧となることを目的とし
  ています。その要約を以下に示します。詳細情報とどのドライバを使用するか
  の情報を必ずオンラインでチェックするようにしてください。

  ※はねさんのハードウェア実績リスト
  <http://www.flatout.org/~wing/Linux/Hardware/> も御覧ください。

  Ghostscript の プリンタの互換性のページ
  <http://www.cs.wisc.edu/~ghost/printer.html> には動作するプリンタの一
  覧と、他のページへのリンクがあります。そして Dejanews
  <http://www.deja.com/> には "動く" と "動かない" の証言が何百もありま
  す。この三つ全てを試してみましょう、それが終わったら、データベース
  <http://www.picante.com/~gtaylor/pht/printer_list.cgi> にそのプリンタ
  が存在するかを確認し訂正して、このドキュメントに将来は正しく掲載される
  ようにしましょう。

  4.3.1.  プリンタの互換性リスト

  本セクションはオンライン版の要約です。オンライン版には基本的な仕様、注
  意、ドライバ情報へのリンク、ユーザによるドキュメント、製造者へのリン
  ク、等々が含まれています。このオンライン版のリストはまた対話的でもあり
  ます。利用者はいつでもプリンタを追加でき、実際常に追加されていますの
  で、チェックを怠らないようにしてください。最後に、もしお使いのプリンタ
  が掲載されていなかった場合はぜひ追加を!

  ここではプリンタを三種類に区分しています。

     完璧
        完璧なプリンタは完璧に動作します - カラー、最高の解像度、その他
        を含め、プリンタの能力を完全に利用して印刷ができます。ドキュメン
        ト化されていない "拡張された解像度" が動作しないプリンタが "完
        璧" としてリストされているケースもまれにありますが、通常は印刷品
        質の違いは非常に小さいので気にすることはないでしょう。

     大体
        きれいに印刷できますが、印刷やその他の機能にいくつかの制限がある
        でしょう。

     一部のみ
        印刷はできます、ただしカラーじゃないか、または低解像度のみでです
        が。これらの制限についての情報は、オンライン版の注意コーナーを参
        照してください。

     置き物
        このくそったれでは印刷できません。通常は、ドライバが無い、そし
        て/または、ドライバを書くためのドキュメントが無いことが原因で
        す。

  全てのケースにおいて、この情報は多数の人間によって提供されたものである
  ため、正確であると保証されたものは全くありません。もっとも、ドライバの
  ウェブページと製造者のウェブサイトで確認することは簡単でしょうが。

  能書きはこのくらいにして、これがプリンタの互換性リストです -

     Apple

        完璧
           LaserWriter 16/600, LaserWriter II NTX, LaserWriter Select
           360.

        大体
           12/640ps.

        置き物
           StyleWriter 2500.

     Avery

        完璧
           Personal Label Printer+.

        大体
           Personal Label Printer.

     Brother

        完璧
           HL-1070, HL-10V, HL-10h, HL-1260, HL-2060, HL-4Ve, HL-630,
           HL-730, HL-760, HL-8.

        大体
           HJ-400, HL-1040, HL-1050, HL-1060, HL-1250, MFC 6550MC.

        一部のみ
           MC-3000, MFC 7150C.

        置き物
           HL-820.

     Canon

        完璧
           BJ-10e, BJ-20, BJ-200, BJ-330, BJ-5, BJC-210, BJC-250,
           BJC-4000, BJC-4100, BJC-4200, BJC-4300, BJC-4400, BJC-600,
           BJC-6000, BJC-610, BJC-620, BJC-70, BJC-800, LBP-1260,
           LBP-1760, LBP-4+, LBP-4U, LBP-8A1, LBP-8II, LIPS-III.

        大体
           BJ-300, BJC-1000, BJC-2000, BJC-240, BJC-4310SP, BJC-7004,
           BJC-80, LBP-4sx.

        一部のみ
           BJC-4550, BJC-7000, BJC-7100, MultiPASS C2500, MultiPASS
           C3500, MultiPASS C5000, Multipass C3000, Multipass C5500.

        置き物
           BJC-5000, LBP-460, LBP-660, Multipass L6000.

     Citizen

        完璧
           ProJet II, ProJet IIc.

        一部のみ
           printiva600C.

     DEC

        完璧
           DECWriter 500i, DECwriter 110i, DECwriter 520ic, LN03.

        一部のみ
           1800.

     Dymo-CoStar

        完璧
           ASCII 250, ASCII+, EL40, EL60, LabelWriter II, LabelWriter
           XL, LabelWriter XL+, SE250, SE250+, Turbo.

     Epson

        完璧
           ActionLaser 1100, LP 8000, LQ 850, SQ 1170, Stylus Color,
           Stylus Color 400, Stylus Color 440, Stylus Color 640, Stylus
           Color 800, Stylus Color 850, Stylus Color II, Stylus Color
           IIs, Stylus Pro XL.
        大体
           EPL 5700, Stylus 300, Stylus Color 3000, Stylus Color 500,
           Stylus Color 740.

        一部のみ
           Stylus Color 300, Stylus Color 900, Stylus Photo 700, Stylus
           Photo 750, Stylus Photo EX.

     Fujitsu

        完璧
           PrintPartner 10V, PrintPartner 16DV, PrintPartner 20W,
           PrintPartner 8000.

     HP

        完璧
           2000C, 2500C, Color LaserJet 4500, DeskJet 1200C, DeskJet
           1200C/PS, DeskJet 1600C, DeskJet 1600Cm, DeskJet 310, DeskJet
           400, DeskJet 420C, DeskJet 500, DeskJet 500C, DeskJet 510,
           DeskJet 520, DeskJet 540, DeskJet 550C, DeskJet 600, DeskJet
           610C, DeskJet 610CL, DeskJet 612C, DeskJet 660C, DeskJet
           670C, DeskJet 672C, DeskJet 682C, DeskJet 690C, DeskJet 694C,
           DeskJet 697C, DeskJet 810C, DeskJet 812C, DeskJet 850C,
           DeskJet 855C, DeskJet 882C, DeskJet 890C, DeskJet 970Cxi,
           LaserJet 1100, LaserJet 1100A, LaserJet 2 w/PS, LaserJet
           2100M, LaserJet 2P, LaserJet 3, LaserJet 3P w/PS, LaserJet 4,
           LaserJet 4 Plus, LaserJet 4050N, LaserJet 4L, LaserJet 4M,
           LaserJet 4P, LaserJet 5, LaserJet 5000, LaserJet 5L, LaserJet
           5M, LaserJet 5MP, LaserJet 5P, LaserJet 6L, LaserJet 6MP,
           LaserJet 6P, LaserJet 8000, LaserJet 8100, Mopier 320,
           PaintJet XL300.

        大体
           DesignJet 650C.  Designjet 750 C Plus, DeskJet 1120C, DeskJet
           870C, DeskJet 880C, DeskJet 895C, DeskJet 895Cxi, DeskJet
           970Cse, LaserJet 2, LaserJet 2100.

        一部のみ
           DeskJet 1000C, DeskJet 710C, DeskJet 712C, DeskJet 720C,
           DeskJet 722C, DeskJet 820C, OfficeJet 500, OfficeJet 600,
           OfficeJet 625, OfficeJet Pro 1150C.

        置き物
           LaserJet 3100.

     IBM

        完璧
           4019, 4029 10P, 4303 Network Color Printer, Page Printer
           3112, ProPrinterII.

     Kyocera

        完璧
           F-3300, FS-1700+, FS-600, FS-800, P-2000.

        大体
           FS-3500.

     Lexmark

        完璧
           Optra Color 1200, Optra Color 1200, Optra Color 1275, Optra
           Color 40, Optra Color 45, Optra E, Optra E+, Optra E310,
           Optra Ep, Optra K 1220, Optra R+, Optra S 1250, Optra S 1855,
           Valuewriter 300.

        大体
           1000, 1100, 2070, 5000, 5700, 7000, 7200.

        Partially
           1020 Business, 2030, Winwriter 400, Z51.

        置き物
           1020, 2050, 3000, 3200, Winwriter 100, Winwriter 150c,
           Winwriter 200, Z11.

     Minolta

        完璧
           PagePro 6, PagePro 6e, PagePro 6ex, PagePro 8.

        一部のみ
           PagePro 8L.

     NEC

        完璧
           P2X, SilentWriter LC 890, Silentwriter2 model 290,
           SuperScript 660i.

        一部のみ
           SuperScript 100C, SuperScript 1260, SuperScript 150C,
           SuperScript 650C, SuperScript 750C, SuperScript 860,
           SuperScript 870.

        置き物
           SuperScript 660plus, SuperScript 660,

     Oce

        完璧
           3165.

     Okidata

        完璧
           8p, OL 410e, OL 600e, OL 610e/PS, OL 800, OL 810e/PS,
           OL400ex, OL810ex, OL830Plus, Okipage 10e, Okipage 12i,
           Okipage 20DXn, Okipage 6e, Okipage 6ex, Okipage 6w, Okipage
           8c.

        大体
           OL 400w, Okipage 4w, Super 6e.

        一部のみ
           ML 192+, OL 610e/S.

        置き物
           Okijet 2010, Okijet 2500, Okipage 8w.

     Olivetti

        完璧
           JP350S, JP450, PG 306.

     PCPI

        完璧
           1030.

     Panasonic

        完璧
           KX-2135, KX-P1123, KX-P1124, KX-P1150, KX-P2023, KX-P2150,
           KX-P4410, KX-P4450, KX-P5400, KX-P8420, KX-P8475.

        大体
           KX-P2123, KX-P6150.

        一部のみ
           KX-P6500.

        置き物
           KX-P6100, KX-P6300 GDI, KX-P8410.

     Printrex

        一部のみ
           820 DL.

     QMS

        完璧
           2425 Turbo EX.

        大体
           ps-810.

     Ricoh

        完璧
           4801, 6000.

        置き物
           Aficio Color 2206, Afico FX10.

     Samsung

        完璧
           ML-5000a.

        置き物
           ML-85G.

     Seiko

        完璧
           SpeedJET 200.

        大体
           SLP, SLP 120, SLP 220, SLP EZ30, SLP Plus, SLP Pro.

     Sharp

        完璧
           AR-161.

     Star

        完璧
           NL-10.

        大体
           LC 90, LC24-200.

        置き物
           WinType 4000.

     Tally

        完璧
           MT908.

     Tektronix

        完璧
           4696, 4697, Phaser 780, Phaser IISX, Phaser PX.

     Xerox

        完璧
           DocuPrint 4508, DocuPrint C55, DocuPrint N17, DocuPrint N32.

        大体
           DocuPrint P12, DocuPrint P8e, Document Homecentre, XJ6C.

        一部のみ
           WorkCentre 450cp, XJ8C.

        置き物
           DocuPrint P8, WorkCentre XD120f.

  (訳注:本リストに記載されたメーカおよび型番は、一般に米国国内で販売され
  ているものです。日本国内で販売されている物は、型番が似ていても搭載され
  たプログラムやフォントが異なるために本リストと動作が変わる可能性があり
  ます)

  4.4.  プリンタの買い方

  最近は、プリンタ選びもずいぶん難しくなってきています。山のように機種が
  あります。選ぶときのコツをいくつか:

     コスト
        出した値段に見合ったものが手にはいるのは何についても同じことで
        す。 200 ドル以下のプリンタでも十分きれいに印刷できるものがほと
        んどですが、 1 ページ印刷するごとのコストはかかります。カート
        リッジの 1 個か 2 個が、新品のプリンタ本体の値段に匹敵してしまう
        ような機種もあります!  また、これも同じような話ですが、劇安のプ
        リンタはそんなに長くは持ちません。例えば、もっとも安いプリンタの
        MTBF は 3 ヶ月程度だったりします!

        (訳注: MTBF は Mean Time Between Failures の略, 平均故障間隔)

     インクジェット
        インクジェットのプリンタヘッドは時間が経つと詰まって使えなくなる
        ものなので、なんらかの方法でヘッドを交換できることが機能の一つで
        す。また、インクジェットのプリンタヘッドは高価なので、必要なとき
        だけヘッドを交換できるということも機能に入ります。 Epson の
        Stylus シリーズは固定式ヘッドを持つものが多く、 HP の DeskJet シ
        リーズのヘッドのカートリッジと統合されているようです。 Canon の
        カートリッジは 3 つの部分に分かれていて、インクのタンクだけを独
        立して交換できます。私はこの設計、気に入ってます。一方、HP のカ
        ートリッジはそう無茶苦茶に高いわけでもないし、より良い製品ライン
        を揃えています。印刷品質という観点からは、Canon はしばしば選択肢
        の三番手どまりだったりします。ま、こんなもんですね。

     レーザープリンタ
        レーザープリンタはドラムとトナーを消費します。一番安い設計のもの
        は、トナーとドラムを大きなカートリッジの中に一緒に納め、性能より
        もコストを重視したデザインとなっています。大量印刷向けの良い製品
        はトナー粉そのままを使うようになっていたり、ないしは少なくともト
        ナー・カートリッジとドラムを分離させた設計になっています。

     写真
        最高の写真印刷出力を求めるなら、 Tektronix Phasers (粘性の高いイ
        ンクのもの) のような連続トーンのプリンタか、 Alps シリーズ (ドラ
        イ・インク・プロセスの類) です。 Alps プリンタの中には実際に手頃
        な値段のものも少しあるのですが、まだ Linux では動きません (私の
        記憶が確かならば、そう書いてあったはず).  より一般的な、写真に特
        化したインクジェット・プリンタは 6 色の CMYKcm 印刷や、時には 7
        色の CMYKcmy プロセスさえも備えていますが、 Linux で動くのは
        PostScript のサポートがあるモデルだけです。 Ghostscript が、これ
        らのカラーモデルをサポートしていないのが原因です。とはいえ、CMYK
        でも、うまく出力すれば、なかなか馬鹿にはできないものです。写真に
        特化したプリンタは、みな運用に高コストがかかります。使い果たすの
        はいつも青インクなのにカートリッジ全体を交換しないといけなかった
        り、ハイ・エンドな写真プリンターで特定の色を補充するのには腕力が
        必要だったりします。

     スピード
        速度は処理能力、帯域幅、そして一般的にプリンタにかけるコストに比
        例します。最速のプリンタは、強力なプロセッサを内部に積んだネット
        ワーク接続されたポストスクリプト・プリンタになるでしょう。コン
        シューマ・レベルのプリンタでは、部分的に Ghostscript のレンダリ
        ング速度に依存するでしょうし、その場合はそこそこ強力なマシン本体
        を使えばかなり改善を図れます。また、フルページのカラー印刷の場合
        は、特にホストのメモリを大量に消費することでしょう。

     ドット・マトリクス
        カーボン紙に印刷したい場合は (訳注: カーボンの付いた複写紙) イン
        パクト・プリンタが必要になります。多くの企業がいまだにドット・マ
        トリクス・プリンタを製造していますし、そのほとんどは旧来の EPSON
        モデルをエミュレートするものですから、ちゃんと使えます。

     ラベル
        サポートされているラベル・プリンタには、二つの流れがあります。
        Dymo-Costar か Seiko SLP シリーズを探してください。これ以外の機
        種は、動くかもしれないし、動かないかもしれません。 Avery 社
        が、8.5x11 インチのフォーマットに則った様々な大きさのステッカー
        式ラベルを作っています。これなら普通のプリンタでも使えます。

     プロッター
        最近では、大きなドラフティング・フォーマットは巨大なインクジェッ
        トプリンタでサポートされています。HP が一般的な選択です。もう少
        し小さめのものの印刷には、中型の (11x17 インチ) インクジェットも
        よく使われています。この手のプロットのほとんどは RTL や HP-GL,
        HP-GL/2 といった言語で行われます。これらはすべて HP が規格を権利
        占有しているベクタ言語で、一般にはアプリケーション・ソフトウェア
        自体から直接生成されます。

  5.  どのスプールソフトウェアを使う?

  ごく最近まで、Linux ユーザの選択肢は極めて単純でした。皆同様に BSD の
  Net-2 コードをほとんどそのまま使っただけの古い lpd を実行していたので
  す。現在に至っても、多くのベンダはこのソフトウェアを出荷し続けていま
  す。しかし徐々に変革が始まっています。Sun Microsystems の Solaris を含
  む SVR4 の流れを汲むシステムでは、 lpsched を中心とする従来のものとは
  完全に異なる印刷スプールのパッケージを持っています。そしていくつかの
  Linux ベンダは、それ程昔のものではないフリーな印刷スプールの仕組みを移
  植した LPRng を提供する傾向があります。 LPRng では複数のプリンタ(シリ
  アルプリンタや lpd が対応していないネットワークプリンタも含む)を導入す
  る際に、はるかに管理しやすくなっています。また lpd に蓄積されたものと
  比べると、はるかにましなコードを基本としています。それは本当に安全であ
  るとさえ言えるのです。SUID されたバイナリは存在しませんし、PGP や
  Kerberos を利用した認証をサポートします。

  こういった状況に登場した興味深い新顔に、インターネット印刷プロトコル
  (Internet Printing Protocol) の実装である ``CUPS'' というのがありま
  す。このプロトコルは、あの素晴らしい …とはいえ、古い… lpd プロトコル
  を置き換えようとするもので、 RFC で定義されています。これの最初の実装
  は、商用製品である ``Easy Print'' のオープン・ソースなコンポーネント
  で、インテリジェントなスプーラと、 Ghostscript の周辺として構築された
  商用プリンタドライバのコレクションです。

  当面は新しい選択肢を考慮してみたとしても、おそらく多くの Linux ユーザ
  にとって lpd は優れた選択肢でしょう。それがしゃれたシステムではないと
  しても、一度設定してしまえば問題なく動作します。またよく知られたもので
  あるため、サード・パーティーから出版されている Unix 関連の本にも詳細に
  記述されています。

  LPRng についてより多くの情報が必要でしたら、LPRng Web Page
  <http://www.astart.com/lprng/LPRng.html> を御確認ください。将来的には
  この HOWTO に LPRng と正規の lpd 両方の情報を載せることになるでしょ
  う。

  6.  どのように動作するのか、基本

  印刷を行うためには、lpd システムがどのように動作するのか理解する必要が
  あります。

  LPD は Line Printer Daemon の頭文字をとっています。また文脈によっては
  そのデーモンという意味で用いられたり、印刷のスプールを実行する一連のプ
  ログラム全体という意味で用いられたりします。これらは以下のようなもので
  す。

     lpd
        スプールを行うデーモンです。マシン上のあらゆることを制御するため
        にこれらの 1つが実行されています。プリンタが印刷している間は、印
        刷するプリンタ毎にさらにもう 1つが実行されます。

     lpr
        ユーザがスプールを実行させるコマンドです。lpr は lpd と連絡をと
        り、新たな印刷ジョブをスプールの印刷キューに入れます。

     lpq
        印刷キューの中の印刷待ちジョブ・リストを表示します。

     lpc
        lpd システムを制御するコマンドです。このコマンドを用いることで、
        印刷キューを止めたり、キューを開始させたり、キューの中の順番を変
        更する、といったようなことが可能になります。

     lprm
        lprm は印刷のスプールから印刷ジョブを削除します。

  コマンドとデーモンはそれぞれどのように連携して印刷を行うのでしょうか?
  システムの起動時に lpd が起動します。 lpd は自分がどのプリンタのスプー
  ルを管理しているのか知るために、/etc/printcap ファイルを参照します。
  lpr コマンドが実行されるごとに、lpr は /dev/printer というデバイス名の
  ソケットを経由して lpd と連携をとります。そして印刷するファイル、誰が
  印刷するのか、どうやって印刷するのか、といったようないくつかの情報を
  lpd に与えます。それから lpd はファイルを適切なプリンタ上で順番に印刷
  するのです。

  lp システムは、かつてほとんどのプリンタが ascii 文字のみを印刷するライ
  ンプリンタだった頃に元々デザインされたものです。そのため、現在の印刷
  ジョブ (PostScript、テキスト、 dvi といったようなもの) のために lpd を
  問題なく動作させるには、わずか数行ではありますが追加でスクリプトを記述
  しなければならない、ということがわかります。

  7.  どうやって設定するのか、基本

  7.1.  伝統的な lpd の設定方法

  lpd に対する最小限の設定は、キューにファイルを取り込み、それを印刷でき
  るようにすることです。プリンタがそのことを理解するかどうかに注意を払う
  必要はありません。ただ、魅力的な出力はおそらく得られないでしょう。それ
  でも、理解する為の第1段階です。読み続けてください!

  基本的に、lpd に印刷キューを追加するには、/etc/printcap の中にエントリ
  を追加し、/var/spool/lpd の下に新しいスプール用のディレクトリを作成す
  る必要があります。

  /etc/printcap のエントリは以下のようになっています。

       # LOCAL djet500
       lp|dj|deskjet:\
               :sd=/var/spool/lpd/dj:\
               :mx#0:\
               :lp=/dev/lp0:\
               :sh:

  この設定では、lp や dj または deskjet と呼ばれるスプールを定義
  し、/var/spool/lpd/dj ディレクトリにスプールします。そしてジョブ毎の最
  大サイズを制限せず、/dev/lp0 に指定されたデバイスから印刷します。大見
  出しページ (印刷する人の名前等を含んでいるもの) を印刷ジョブの先頭に加
  えることはしません。

  さぁ、printcap の man ページを読んでみてください。

  上記の設定は実に単純ですが、実際は落とし穴があります。Deskjet 500 が理
  解できるファイルを送っているにもかかわらず、Deskjet は奇妙な印刷を行っ
  てしまいます。例えば、通常の Unix のテキストファイルを送って
  も、Deskjet は文字どおりに newline を翻訳してしまうのです。つまり、こ
  んな具合になってしまいます。

       This is line one.
                        This is line two.
                                         This is line three.

  どうしたものでしょう。この設定で PostScript のファイルを印刷したなら、
  この "階段効果" をともなう、美しいけれどもなんの役にも立たない
  PostScript コマンドの列記された出力が得られることでしょう。

  明らかに何かが必要です。そしてこれがフィルタを使う目的なのです。
  printcap の man ページを読んだ観察力の鋭いあなたなら、スプールの属性で
  ある if と of に気がついているかもしれません。 if つまり入力フィルタ
  が、まさにここで必要なものなのです。

  newline の前にキャリッジリターンを付け加える filter と呼ばれる小さな
  シェル・スクリプトを書けば、この階段状の印刷は除去されます。もちろ
  ん、printcap のエントリに if の行を追加する必要があります。

       lp|dj|deskjet:\
               :sd=/var/spool/lpd/dj:\
               :mx#0:\
               :lp=/dev/lp0:\
               :if=/var/spool/lpd/dj/filter:\
               :sh:

  簡単な filter スクリプトはこのようになるでしょう。

       #!perl
       # The above line should really have the whole path to perl
       # (上記の行は perl への完全なパスでなければいけません)
       # This script must be executable: chmod 755 filter
       # (このスクリプトは実行可能でなければいけません。
       #   chmod 755 filter を実行してください)
       while(<STDIN>){chop $_; print "$_\r\n";};
       # You might also want to end with a form feed: print "\f";
       # (印刷の最後に改頁が必要なら、print "\f"; を入れてください)

  上記のようなことが終われば通常の Unix テキストファイルを印刷できるよう
  なスプールになり、意味のある結果が得られます (このフィルタを書く非常に
  多くのよりよい方法がありますが、実例となるものはほとんどありません。あ
  なたはより有効なものを作ってください)。

  残っている問題は、単なるテキストファイルを印刷することではなく、
  PostScript やその他のフォーマット、またはグラフィクスを含む出力を可能
  にすることです。そしてそれ自体は可能ですし、簡単なことです。方法は前述
  した改行修正を行うフィルタの単純な拡張です。入力として様々な形式のファ
  イルを受け入れ、それぞれに Deskjet のようにきれいな出力を得られるフィ
  ルタを書くことができたのなら、本当に賢い印刷スプールになったといえま
  す。

  そのようなフィルタは、マジックフィルタ(magic filter) と呼ばれていま
  す。奇妙なものを印刷するつもりでなければ、頭を悩ませて自分でフィルタを
  書く必要はありません。ネット上には、既に多くの素晴らしいスプールが存在
  しているのです。 APS フィルタは最良の選択肢の一つです。もしくはあなた
  の Linux ディストリビューションに、これを簡単に設定できるツールが用意
  されているかもしれません。

  7.2.  ファイルの許可制限

  広く需要があるため、私はシステム上の重要なファイルについて、以下のリス
  トにあるような許可制限を与えています。何種類ものより良い方法があります
  が、理想的には SGID されたバイナリだけを使用すべきで、SUID root を何に
  でも適用すべきではありません。しかし、私のシステムはこのように設定され
  ていて、問題なく動作しています(率直に言うなら、ベンダでさえきちんと動
  作する lpd を出荷できないのですから、それは荒馬を乗りこなそうとするよ
  うなものでしょう)。

       -r-sr-sr-x   1 root     lp    /usr/bin/lpr*
       -r-sr-sr-x   1 root     lp    /usr/bin/lprm*
       -rwxr--r--   1 root     root  /usr/sbin/lpd*
       -r-xr-sr-x   1 root     lp    /usr/sbin/lpc*
       drwxrwxr-x   4 root     lp    /var/spool/lpd/
       drwxr-xr-x   2 root     lp    /var/spool/lpd/lp/

  小さい番号 (low-numbered) の lp サービスポートに接続されるため、現在の
  ところ lpd は root として実行される必要があります。バインドされた後
  は、おそらく UID lp.lp または何かになるべきででしょう。しかし、私はそ
  れが何をするのかは考えません。あしからず。

  8.  印刷ソフトウェアを入手する

  多くの印刷前処理フィルタパッケージ(そして、他のプリンタ関連ソフトウェ
  ア)は、Metalab <ftp://metalab.unc.edu/pub/Linux/system/printing/> から
  手に入れることができます。psutils、a2ps、mpage、dvitodvi、 flpr などの
  ようなユーティリティは、全てここから見つけることができます。

  しばらくの間、プリンタ設定を容易にしようとしていた いくつかのパッケー
  ジがありました。それらはすべて、現在もあるはずです。しかし、メニューに
  より printcap の設定ができ、想定されるほとんどの入力を処理できる
  Andreas Klemm さんの APS フィルタパッケージが、最新でかつ最良のうちの
  一つです。もしも、ベンダが気の利いたプリンタ設定ツールを出荷していない
  なら、APS Filter を使ってください。

  9.  ベンダ(配布パッケージ)ごとの解決方法

  このセクションはもちろん完璧なものではありません。あなたのお気に入りの
  ディストリビューションの細部について、気づいたことを送ってください。

  9.1.  Red Hat

  Red Hat には リモートプリンタと、ローカルなデバイス上のプリンタを加え
  ることができる GUI プリンタ管理ツール (control panel 内) があります。
  それは Ghostscript がサポートするプリンタタイプと、印刷先の Unix デバ
  イスファイルを選択させ、そして /etc/printcap へプリンタキューを設置
  し、gs と nenscript 用の PostScript とアスキーを変換する短いマジック
  フィルタを書き出します。

  お使いのプリンタを Red Hat が標準で提供している Ghostscript (Aladdin
  のものというよりは、GNU の方に近いものです。サポートしているプリンタも
  少なくなっています)がサポートしていない場合にはうまくいきません。も
  し、手持ちの Red Hat ソフトウェアで正確に印刷することができないのに気
  づいたら、前出(または online
  <http://www.picante.com/~gtaylor/pht/printer_list.cgi>) のプリンタ互換
  性リストで調べてください。もしプリンタがRed Hat のツールによりサポート
  されないのなら、 Aladdin Ghostscript の contributed verison をインスト
  ールする必要があるかもしれません。そして、新しい Ghostscript がサポー
  トしているプリンタに関するすべてを知っている apsfilter パッケージを利
  用する方がずっといいでしょう。

  9.2.  Debian

  Debian の場合には、 普通の lpd か LPRng のどちらかを選択できます。プリ
  ンタ設定ツールも同様に選択可能となっていると思います。私は Debian が同
  じく、プリンタ設定ツールの選択を提示すると信じています。 apsfilter
  version 5 以降が、LPRng と Ghostscript's uniprint driver scheme のサポ
  ートが加わったので最良の選択です。

  9.3.  その他のディストリビューション

  どうか私に、他のディストリビューションならばどうするかについて知らせて
  ください。

  10.  Ghostscript.

  Ghostscript は Linux で印刷を行うのにとても重要なプログラムです。 Unix
  環境での印刷用ソフトウェアのほとんどは PostScript を作成します。プリン
  タにPostScript をサポートする機能をつけると通常 100 ドルほどのオプショ
  ンになります。しかしながら Ghostscript は無料で PostScript からお使い
  のプリンタの言語を作り出します。お使いの lpd 入力フィルタと連動し、仮
  想の PostScript プリンタとなり、印刷をとても簡単にします。

  Ghostscript は 2 つの形態で入手できます。 Aladdin Ghostscript と言われ
  るものは Ghostscript の商用版で、個人使用に関しては自由に使うことがで
  きますが、商用の Linux ディストリビューションでの配布はできません。
  Aladdin Ghostscript はフリーの Ghostscript の1年ほど先を進んでいます。
  たとえば本ドキュメント時点での最新版は、旧版の Ghostscript ではサポー
  トしていない多くのカラーインクジェットドライバをサポートしています。

  Ghostscript のフリー版は GNU Ghostscript で、単にGNU に寄贈された
  Aladdin Ghostscript の旧版です(このような配慮について Aladdin への称賛
  - ソフトウェアベンダが完全にオープンな GPL ディストリビューションを扱
  うことができないなら、 ソフトウェアベンダはこのような方法でどんどんフ
  リーソフトウェアをサポートするとよいでしょう)。

  gs で何かをするときはいつでもファイルアクセスを無効(-dSAFER)にするオプ
  ションを使うべきです。PostScript は充分に機能的な言語ですが、よくない
  PostScript プログラムは頭痛の種になります。

  Adobe の Portable Document Format(PDF) は、実際には圧縮ファイルにまと
  められた PostScript よりちょっとはましなものです。Ghostscript は
  PostScript を扱うのとほとんど同様に PDF を扱うことができます。そういう
  わけで Ghostscript を使えば、あなたは街で最初に PDF を印刷できるプリン
  タを持つことができるわけです。

  10.1.  Ghostscript を起動する

  一般的に Ghostscript はあなたが設定したどんなマジックフィルタを使って
  も起動しますが(もしお使いのベンダがあなたが都合がよいものを提供してい
  ないなら、 aps フィルタを使うことをお勧めします)、デバッグのために、し
  ばしばそれを直接動かすようにするのが便利です。

  gs -help というコマンドはオプションと利用できるドライバ(このリストはコ
  ンパイル時に組み込まれたリストで、利用できるすべてのドライバリストでは
  ありません)について簡単なヘルプリストを示します。テストするつもりで gs
  を動かしてみましょう。

    gs options -q -dSAFER -sOutputFile=</dev</lp1 test.ps.

  10.2.  Ghostscript の出力を調整する

  gs の出力が満足できないものなら、やってみることはたくさんあります (実
  際ソースを持っているなら、修正できそうなことは何でもできます)。

  10.2.1.  出力の位置とサイズ

  位置やサイズ、そしてページ上の画像の縦横の比率は Ghostscript のプリン
  タ固有のドライバで制御できます。目的のページが縦横の比率によっては短す
  ぎたり、長すぎたり、また大きすぎるような状態で表示されるなら、ドライバ
  のソースモジュールを見てパラメータを調整したほうがよいでしょう。残念な
  がらドライバはそれぞれさまざまですから、私は何が適当かは言えませんが、
  当然ながらほとんどのものはちゃんと説明されています。

  10.2.2.  ガンマ、ドットサイズ、その他

  ほとんどの非レーザープリンタのドットは、レーザープリンタのものよりも大
  きいです。このため画像はより黒っぽく出力されることになります。このよう
  な問題を経験しているなら、転写機能を使うほうがよいでしょう。
  Ghostscript の lib ディレクトリに次のようなファイル(gamma.ps)を作り、
  gs を起動するとき実際のファイルの前にそのファイル名を加えてやります。
  より低い値を使えばより明るく印刷されます。とりわけ、お使いのドライバが
  色をラスタライズ(色情報を分解すること)するのに Floyd-Steinberg のアル
  ゴリズムを使用しているなら、より低い値( 0.2 - 0.15 )にするといいかもし
  れません。

         ---8<---- gamma.ps ----8<---
         %!
         %transfer functions for cyan magenta yellow black
         {0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer
         ---8<------------------8<---

  これらの値を変更すれば、色について欠陥を持っているプリンタを改良するこ
  ともまた可能です。このようなことをするなら、テストページの印刷に
  colorcir.ps ファイルを使うことをお勧めします。このファイルは、
  Ghostscript と一緒に起動します( colorcir.ps ファイルは、 Ghostscript
  のあるディレクトリ以下の ./examples というサブディレクトリにありま
  す)。

  多くのより新しいカラーインクジェットドライバには、コマンドラインオプ
  ションあるいは upp ドライバファイルがあります。それらはガンマとその他
  違った紙のタイプにプリンタをあわせるための変更を行います。修正をしたこ
  とをちゃんと反映させるために PostScript を行なう前にこのファイルを見て
  みるとよいでしょう。

  (訳注:upp ファイルは Ghostscript があるディレクトリ以下の ./examples
  というサブディレクトリにあります)

  11.  ネットワーク越しのプリンタへの印刷方法

  lpd の特徴のひとつは、異なったマシンに物理的に接続しているプリンタに対
  するネットワーク越しでの印刷をサポートしていることです。フィルタスクリ
  プトと様々なユーティリティを注意深く組み合わせることで、あらゆる種類の
  ネットワーク上のプリンタに透過的に lpr で印刷することができます。

  11.1.  Unix/lpd のホストに対して

  リモートのマシンからあなたのプリンタに印刷できるようにするためには、そ
  のマシンを /etc/hosts.equiv か /etc/hosts.lpd に列挙しなければなりませ
  ん (hosts.equiv は他にも多くの影響を及ぼすことに注意してください - こ
  れにマシンを列挙する場合、自分が何をしているのか必ずわかっておいてくだ
  さい)。 rs 属性を使うことで、他のマシン上のある特定のユーザのみにあな
  たのプリンタへの印刷を許可するようにできます - これに関する情報は lpd
  の man ページをご覧ください。

  11.1.1.  lpd  を使って

  他のマシンで印刷するには、このような /etc/printcap エントリを作成して
  ください。

  # REMOTE djet500
  lp|dj|deskjet:\
          :sd=/var/spool/lpd/dj:\
          :rm=machine.out.there.com:\
          :rp=printername:\
          :lp=/dev/null:\
          :sh:

  ローカルマシンには lpd によって管理されるスプールディレクトリが依然と
  してあることに注意してください。リモートマシンがビジーであったり、オフ
  ラインであったりした場合、ローカルマシンからの印刷ジョブは送信可能にな
  るまでそのスプール領域で待たされます。

  11.1.2.  rlpr  を使って

  ジョブ送信のために lpd を苦労して設定しなくても、 rlpr を使って印刷
  ジョブをリモートマシンのキューに直接送信することもできます。いろいろな
  プリンタに対してほんの時々印刷を行なうような状況では、たいていこの方法
  が便利です。 rlpr の発表文によると -

  rlpr は、TCP/IP を使ってネットワーク上のどこにある lpd サーバにでも、
  印刷ジョブを送信します。

  lpr と違い、リモートプリンタが印刷元のマシンにはっきりと (例えば
  /etc/printcap を介してのように)知られている必要は *ありません*。このた
  め、かなり柔軟性に優れ、管理の手間が少なくなります。

  rlpr は従来の lpr が使用されるような場面ならどこでも使うことができ、伝
  統的な BSD の lpr と下位互換性があります。

  rlpr の最大の利点は、印刷元のシステムがどのように設定されているかを考
  慮せずに *どこからでもどこにでも* 離れたところで印刷できるということで
  す。 rlpr は従来の lpr と全く同じようにフィルタとして動作させることが
  でき、これによってリモートマシンで実行されている netscape や xemacs な
  どのクライアントからあなたのローカルマシンへの印刷をわずかな手間で行な
  えます。

  rlpr は Metalab <ftp://metalab.unc.edu/pub/Linux/system/printing/> か
  ら入手できます。

  11.2.  Win95 や WinNT、LanManager、Samba のプリンタに対して

  Printing to Windows mini-HOWTO があり、ここよりも豊富な情報が書かれて
  います。

  smbclient プログラム(samba の一部)によって lpd のキューを TCP/IP ベー
  スの SMB 印刷サービスに向けることができます。これを行なう smbprint と
  いうスクリプトが samba に含まれています。簡単に言うと、対象となるプリ
  ンタのための設定ファイルをスプールディレクトリに置いて、smbprint スク
  リプトを if として設定してください。

  /etc/printcap のエントリはこのような感じになります -

  lp|remote-smbprinter:\
      :lp=/dev/null:sh:\
      :sd=/var/spool/lpd/lp:\
      :if=/usr/local/sbin/smbprint:

  この設定方法に関するこれ以上の情報については smbprint スクリプトに含ま
  れるドキュメントを読むべきでしょう。

  smbclient を使って、lpd を介さずに SMB の印刷サービスにファイルを直接
  投げることもできます。 man ページをご覧ください。

  11.3.  NetWare のプリンタに対して

  ncpfs スイートは、 nprint と呼ばれるユーティリティを含んでいます。これ
  は NetWare を対象としているという点を除けば smbprint と同じ機能を提供
  します。 Metalab から ncpfs を入手することができます。バージョン 0.16
  の LSM エントリより -

       ncpfs を使って、NetWare サーバのボリュームを Linux にマウン
       トすることができます。NetWare の印刷キューに印刷したり、Net-
       Ware の印刷キューを Linux の印刷システムにスプールしたりする
       こともできます。カーネルは 1.2.x または 1.3.54 以降のバー
       ジョンが必要です。 ncpfs は 1.3.54 より前の 1.3.x カーネルで
       は動作しません。

  nprint を lpd 経由で動作させるには、標準入力を NetWare のプリンタに印
  刷するためのちょっとしたシェルスクリプトを作成して lpd の印刷キューの
  if として設定してください。このような感じになるでしょう -

       sub2|remote-NWprinter:\
               :lp=/dev/null:sh:\
               :sd=/var/spool/lpd/sub2:\
               :if=/var/spool/lpd/nprint-script:

  nprint-script は大体このような感じになるでしょう -

       #! /bin/sh
       # You should try the guest account with no password first!
       # まずはパスワードなしのゲストアカウントを試すべきです!
       /usr/local/bin/nprint -S net -U name -P passwd -q printq-name -

  11.4.  EtherTalk (Apple) のプリンタに対して

  netatalk パッケージは nprint や smbclient のようなものを含んでいます。
  Apple のネットワークから、もしくは Apple のネットワークへ印刷する手順
  を私がやろうとしているよりよっぽどうまく文書にまとめられている方がいま
  す - Linux Netatalk-HOWTO <http://thehamptons.com/anders/netatalk/> を
  ご覧ください。

  11.5.  HP やその他のイーサネットプリンタに対して

  HP や他のいくつかのプリンタには lpd を使って直接印刷できるようなイーサ
  ネットインタフェースがついてきます。あなたのプリンタやネットワークアダ
  プタに付属の説明書に従うべきですが、一般的にはそのようなプリンタは lpd
  を「実行して」おり、印刷可能なひとつかそれ以上のキューを提供していま
  す。例えば、HP ではこのような printcap で動作するかもしれません -

       lj-5|remote-hplj:\
               :lp=/dev/null:sh:\
               :sd=/var/spool/lpd/lj-5:\
               :rm=printer.name.com:rp=raw:

  Jet Direct インタフェースを備えた HP Laserjet プリンタは、一般に二つの
  組み込み lpd キューをサポートしています -- PCL を(もしかしたら
  PostScript も)受け付ける "raw" と、ただの ascii を受け付ける(また自動
  的に階段効果に対処する) "text" です。 JetDirect Plus3 3 ポートボックス
  を持っているなら、キューは "raw1", "text2" などというように名付けられ
  ます。

  ISS 会社が HP Jetdirect インタフェースをハングアップさせる種々のサービ
  ス不能攻撃を確認していることに注意してください。これらのほとんどは 98
  年の初秋に明らかにされました。

  大規模な環境、中でも特にいくつかのプリンタが PostScript をサポートして
  いないような環境では、ひとつの専用プリントサーバを設置して、全てのマシ
  ンがそれに対して印刷を依頼し、全ての Ghostscript のジョブがそこで実行
  されるようにすると便利かもしれません。

  また、これは Linux ボックスをプリンタのスプールサーバとして動作させる
  ことで、ネットワークのユーザが印刷ジョブを素早く完了させ、プリンタが誰
  か他の人が送信した他のジョブを印刷している間待たずに済むようにできま
  す。修正不可能な古い HP Jetdirect を持っている場合にも言えます - これ
  によってプリンタが動かなくなってしまう頻度を低減します。

  これを行なうためには、Linux ボックスのキューをイーサネットを装備した
  HP LJ を指すように(先述のように)設定してください。次に LAN の全てのク
  ライアントをその Linux キューを指すように設定してください(例えば先述の
  例の lj-5 のように)。

  いくつかの HP のネットワークプリンタは、クライアントによって送信された
  バナーページ設定に気づかないようです - プリンタに telnet してリターン
  キーを 2 回押し、 "banner: 0" と入力した後 "quit" と入力することで、内
  部的に生成されたバナーページを取り消すことができます。この方法で同様に
  変更できる設定が他にもあります - リストを見るには "?" と入力してくださ
  い。

  全ての設定は HP の WebJet <http://www.hp.com/go/webjetadmin> ソフト
  ウェアによって制御することができます。このパッケージはデーモンとして動
  作し、指定されたポートに対する HTTP リクエストを受け付けます。また、
  ネットワーク上の HP のプリンタを制御できるフォームと Java アプレットを
  提供します。理論的には Unix の印刷キューも制御できるのですが、 rexec
  サービスを使用して実現しており、これは全く安全性に欠けているので、この
  機能を使用することはお勧めしません。

  11.5.1.  古い HP のプリンタに対して

  いくつかのプリンタ (と、プリンタをネットワーク対応にする「ブラックボッ
  クス」の類) は、安っぽく貧弱でプロトコルなしの基本的な TCP 接続しかサ
  ポートしていません。この種のもので有名なのは、JetDirect (いくつかの
  JetDirectEx を含む)の初期モデルです。基本的に、このプリンタに印刷する
  には、プリンタの決められたポート (一般的には 9100 か 3 ポートボックス
  では 9100, 9101, 9102)に対して TCP コネクションをオープンし、印刷ジョ
  ブを流し込まなければいけません。 LPRng (この節を読んでいるならこちらを
  代わりに使うべきです) には印刷ジョブを適当な(random) TCP ポートに流し
  込むためのサポートが組み込まれています。しかし、 BSD lpd ではこれほど
  簡単にはいきません。おそらく一番いい方法は、 netcat と呼ばれている小さ
  なユーティリティを手にいれて使うことでしょう。さもなくば、他の手を使っ
  て実装してしまうのもありです。Perl で書くなら -

  #!/usr/bin/perl
  # Thanks to Dan McLaughlin for writing the original version of this
  # script (And to Jim W. Jones for sitting next to Dan when writing me
  # for help ;)
  # このスクリプトの最初のバージョンを書いた Dan MacLaughlin に
  # 感謝します(それと Dan が私に助けを求めるメールを書いているときに
  # Jim W. Jones が彼の隣に座っていてくれたことに ;-)

  $fileName = @ARGV[0];

  open(IN,"$fileName") || die "Can't open file $fileName";

  $dpi300     = "\x1B*t300R";
  $dosCr      = "\x1B&k3G";
  $ends = "\x0A";

  $port =  9100 unless $port;
  $them = "bach.sr.hp.com" unless $them;

  $AF_INET = 2;
  $SOCK_STREAM = 1;
  $SIG{'INT'} = 'dokill';
  $sockaddr = 'S n a4 x8';

  chop($hostname = `hostname`);
  ($name,$aliases,$proto) = getprotobyname('tcp');
  ($name,$aliases,$port) = getservbyname($port,'tcp')
      unless $port =~ /^\d+$/;;
  ($name,$aliases,$type,$len,$thisaddr) =
          gethostbyname($hostname);
  ($name,$aliases,$type,$len,$thataddr) = gethostbyname($them);
  $this = pack($sockaddr, $AF_INET, 0, $thisaddr);
  $that = pack($sockaddr, $AF_INET, $port, $thataddr);

  if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) {
  #    print "socket ok\n";
  }
  else {
      die $!;
  }
  # Give the socket an address.
  # ソケットにアドレスを与えます。
  if (bind(S, $this)) {
  #    print "bind ok\n";
  }
  else {
      die $!;
  }

  # Call up the server.
  # サーバに接続します。

  if (connect(S,$that)) {
  #    print "connect ok\n";
  }
  else {
      die $!;
  }

  # Set socket to be command buffered.
  # ソケットをコマンドバッファリングするように設定します。

  select(S); $| = 1; select(STDOUT);

  #    print S "@PJL ECHO Hi $hostname! $ends";
  #    print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends";
  #    print S $dpi300;

  # Avoid deadlock by forking.
  # fork してデッドロックを避けます。

  if($child = fork) {
      print S $dosCr;
      print S $TimesNewR;

      while (<IN>) {
          print S;
      }
      sleep 3;
      do dokill();
  } else {
      while(<S>) {
          print;
      }
  }

  sub dokill {
      kill 9,$child if $child;
  }

  11.6.  リモートプリンタに if  を実行する

  lpd の奇妙な点のひとつは、if がリモートプリンタのためには実行されない
  ということです。if を実行する必要があるとわかった場合、キューを二重に
  設定し、ジョブを再度キューに入れることで実現できます。例えば、このよう
  な printcap を考えてみてください -

       lj-5:\
               :lp=/dev/null:sh:\
               :sd=/var/spool/lpd/lj-5:\
               :if=/usr/lib/lpd/filter-lj-5:
       lj-5-remote:lp=/dev/null:sh:rm=printer.name.com:\
               :rp=raw:sd=/var/spool/lpd/lj-5-raw:

  このような  filter-lj-5 スクリプトがあるとします -

       #!/bin/sh
       gs <options> -q -dSAFER -sOutputFile=- - | \
               lpr -Plj-5-remote -U$5

  lpr の -U オプションは lpr がデーモンとして実行されているときにのみ、
  機能します。これは、再送されたキュー中のジョブに関して投げた人の名前を
  正確に設定します。ユーザ名が第 5 引数ではない場合があるので、ユーザ名
  を取得するにはもっと頑健な手段を使用するべきでしょう。 printcap の man
  ページをご覧ください。

  11.7.  Windows から

  Windows (とおそらく OS/2 も)クライアントから Linux サーバへの印刷は
  samba パッケージを使用することにより SMB 越しに直接サポートされていま
  す。また samba パッケージは Windows クライアントとの Linux ファイルシ
  ステムのファイルの共有もサポートしています。

  samba はかなり完成度の高いドキュメントを含んでおり、それをカバーする優
  れた samba FAQ もあります。 Linux ボックスのマジックフィルタを設定して
  それに対して PostScript を印刷することもできますし、全ての Windows マ
  シンにプリンタ固有のドライバをインストールしてまわってそれらに対して
  フィルタなしのキューを用意することもできます。 Windows のドライバにま
  かせるほうがより良い出力を得ることができる場合もありますが、 Windows
  ボックスがたくさんあるときには、少々管理の苦労は増えることになります。
  ですから、まず PostScript を先に試してみてください。

  11.8.  Apple から

  Netatalk は、 Apple クライアントからの EtherTalk 越しの印刷をサポート
  します。さらなる情報が必要ならば Netatalk HOWTO Page
  <http://thehamptons.com/anders/netatalk/> をご覧ください。

  (訳注: Linux Netatalk 日本語版
  <http://www.linux.or.jp/JF/JFdocs/jp.netatalk-HOWTO.html>もどうぞ)

  11.9.  Netware から

  ncpfs パッケージは、NetWare の印刷キューに対するサービスを提供するため
  に使用できる pserver という名前のデーモンを含んでいます。私の理解する
  ところでは、このシステムは Bindery-based NetWare すなわち bindery アク
  セスを有効にしている 2.x か 3.x, 4.x を必要とします。

  ncpfs と pserver プログラムに関してもっと知りたければ、 ncpfs の FTP
  サイト <ftp://ftp.gwdg.de/pub/linux/misc/ncpfs/> をご覧ください。

  12.  Windows 専用プリンタ

  すでに議論したように、普通のプリンタ言語をしゃべらないため、本質的にサ
  ポートされていないプリンタがあります。それらのプリンタは、コンピュータ
  の CPU がビットマップを描画して、一定速度でその画像情報をプリンタに送
  るしくみになっています。たまに PCL のような通常の言語をしゃべることも
  ありますが、それはまれなケースです。通常のパラレル接続を使わずに、ベン
  ダのドライバによってハードウェアの動作 (もっとも大切なものはフロー制
  御) をエミュレートするプリンタさえも存在します (本当にローエンド機種で
  すが)。

  いずれにしても、あなたがそういった欠陥商品のおかげで行き詰まってしまっ
  たときには、いくつかの方法を試すことができます。

  12.1.  Ghostscript - Windows 変換ドライバ

  印刷を実行する前に、Ghostscript を介してプリントジョブを処理する
  Windows のプリンタドライバ (mswinpr2) を手に入れることができます (UNIX
  LPD の if フィルタのようなものです)。また、Windows の GDI コールを利用
  してプリントをする新しい Ghostscript ドライバも存在します。これらを使
  えば、Windows マシンからWindows 専用プリンタへの PostScript 印刷が、ベ
  ンダに提供されたドライバを使うことによって可能となるはずです。
  それがうまくいったら、今度は Linux から Windows プリンタへネットワーク
  経由でプリントする上記の説明に従えば、Unix (そしてほかの
  Windows、Mac、その他) のホストから欠陥プリンタへとプリントをすることが
  できるようになります。

  念のため断っておきますが、私は Windows 専用プリンタを持っていないた
  め、この方法を試したことはありません。ですから、ここに書いた方法通りに
  すればうまくいくかどうかは分かりませんし、ほかの方法を使う必要があるか
  もしれません。ここに記したすべてのソフトウェアは、Ghostscript のホーム
  ページから入手可能です (この文書の Ghostscript の章にあるリンクを参
  照)。

  12.2.  pbm2ppa プログラム

  HP プリンタの中には、「プリント実行機構 (Printing Performance
  Architecture) 」を使っているものがあります (``we were too cheap to
  implement PCL'', ``PCL を実装したんだけど、安すぎ'' というのが宣伝文
  句)。これは、Tim Norman さんが書いた pbm2ppa 変換ソフトウェアを介し
  た、まわりくどい方法によってサポートされています。基本的に
  は、Ghostscript によって PostScript から pbm 形式のビットマップイメー
  ジを描画して、 pbm2ppa によってプリンタに依存する ppa 形式のビットマッ
  プ形式に変換し、それをプリンタに送るのです。このプログラムは、今では
  Ghostscript ドライバ版が入手可能かもしれません。

  ppa ソフトウェアは、ppa のホームページ
  <http://www.rpi.edu/~normat/technical/ppa/> から入手可能です。pbm2ppa
  は HP 720, 820, 1000 のいくつかのモデルをサポートしています。 ppa のプ
  リンタサポートについて、より詳しくはパッケージ内の文書を読んでくださ
  い。

  12.3.  Lexmarks

  安価な Lexmark インクジェットプリンタのほとんどは、メーカ専売の言語を
  使っているため、Windows 専用プリンタだということができます。しか
  し、Henryk Paluch さんが Lexmark 7000 に白黒印刷ができるプログラムを書
  きました。もしかしたら、彼がカラー印刷の方法を明らかにして、さらにほか
  の Lexmark インクジェットへサポートを広げるようになるかもしれません。
  より詳しくは、ここ <http://bimbo.fjfi.cvut.cz/~paluch/l7kdriver/>を参
  照してください。

  同様に、5700 や 1000, 1100, 2070, その他についても新しいドライバがあり
  ます。入手に関しては、上にある「サポートされているプリンタ」のセクショ
  ンや私の Web サイトを見てください。

  13.  ファックスを用いた印刷の方法

  13.1.  ファックスモデムを使う

  ファックスの送受信をするためのプログラムはいくつもあります。Sam
  Leffler さんのHylaFax はその中でももっとも複雑なものの一つです。
  ftp.sgi.com から入手できます。このプログラムは、複数モデムの使用から一
  斉送信に至るあらゆる機能を備えています。

  SuSE (訳注: Linux ディストリビューションの一つ)は Java HylaFax を提供
  しています。どの Java プラットホームでも(Windowsおよび Linux を含む)
  利用できるということです。

  efax も利用可能です。Linux 機の場合にはたいていこちらを選ぶ方が賢明で
  しょう。これはファックスを送信するだけの簡単なプログラムです。受信には
  gettyプログラムである mgetty が使えます(モデムによってはボイスメールも
  取り扱えます)。

  13.2.  遠隔印刷サービスを使う

  印刷したいものを電子メールといっしょに送付すれば、どこにあるファックス
  機からでもそれを印刷できるというサービスを提供する実験が行われていま
  す。サポートされているのは PostScript のような精密な形式のものです。世
  界中どこでも利用できるというわけにはいきませんが、とても有用なサービス
  と言えるでしょう。遠隔プリントサービスを介する印刷の詳細については、遠
  隔印刷の WWW サイト <http://www.tpc.int/>をご覧下さい。

  14.  印刷するブツを作る方法

  現在私たちは、まさにソフトウェアのネズミの巣に迷い込んでいます。いくら
  かの程度の差はありますが、Linux で何種類ものバイナリを走らせることがで
  きます。Linux/x86、 Linux/Alpha、 Linux/Sparc、 Linux/foo、 iBCS、
  Win16/Win32s (dosemu やそのうちに wine を使うことによって)、 Mac/68k
  (Executor を使用して)、 そして Java です。このドキュメントでは Linux
  本体でのやり方と一般的な UNIX のソフトウェアについて述べます。

  Linux 本体に関して言うと、選択肢は UNIX 汎用のものにおおむね限られてい
  ます。

  14.1.  マークアップ言語(Markup languages)

  だいたいのマークアップ言語は、大きなプロジェクトや繰り返し作業の多いプ
  ロジェクトにより適しています。コンピュータに文書のレイアウトを制御さ
  せ、見栄えを統一したいような場合です。

     nroff
        これは UNIX の最初のマークアップ言語の1つでした。 man page は
        *roff マクロで書式化された物の最も代表的な例です。nroff に対して
        悪口を言う人も多く、少なくとも私にとっては必要以上に難解な構文を
        持ちますので、新しく作業をするときの選択肢にはなりにくいです。で
        すが groff を使用することによって、man page を直接 PostScript に
        することができるということを知っておく価値はあります。ほとんどの
        man ではこれは man -t foo | lpr を実行することによって可能です。

     TeX
        TeX とそれのマクロ集である LaTeX は UNIX 上で最も広く使われてい
        るマークアップ言語の一つです。テクニカルな記述は、しばしば LaTeX
        で書かれます。その理由としては文章のレイアウトを決める作業を非常
        に簡単にして、また依然として、数学的記述を完全にサポートする数少
        ないテキスト処理システムの一つだからです。TeX の出力フォーマット
        は dvi で、dvips か dvilj によって PostScript やヒューレットパッ
        カードの PCL へと変換できます。TeX か LaTeX をインストールしたい
        場合、teTeX グループの全てのパッケージをインストールしてくださ
        い。これには全てが含まれています。

        (訳注:日本語の組版 (縦組み) に対応した TeX としては、 pTeX
        <http://www.ascii.co.jp/pb/ptex/> があります)

     SGML
        少なくとも一つの Unix/Linux 用の free の sgml パーサーがありま
        す。それは Linuxdoc-SGML ドキュメントシステムの根底を成すもので
        すが、他の DTD もサポートしています。

     HTML
        単純な仕事だったら、HTML で書いて Netscape で印刷するだけで十分
        だよ、と誰かが示唆してくれました。私はそうは思いませんが、まああ
        なたにおまかせします。

  14.2.  WYSIWYG 型ワープロ

  WYSIWYG 型のワープロには、もはや何の不足もありません。完全なオフィスス
  イート(office suite)なものもいくつか入手可能で、中には個人利用の場合に
  はフリーな物もあります(StarOffice)。

     StarOffice
        サン・マイクロシステムズは Linux 用の StarOffice をネットでフリ
        ーで配布しています。この成熟したオフィススイートは、あなたが期待
        する機能すべてを備えているはずで、また値段の点でも非の打ち所があ
        りません。どのように入手し、インストールするのかが記述された
        mini-HOWTO がそこらに転がっています。StarOffice は PostScript 、
        もしくは PCL を生成しますから Linux 上の他のプログラムで使えてい
        るプリンタならどこででも動作するはずです。見たところこれは
        Office クローンで、少々多機能すぎるところがあります; そう、(多機
        能すぎについての)、今や同様の実例が二つあるってわけですよ!

     WordPerfect
        Corel は Word Perfect 8 基本バージョンの Linux 版をフリーで配布
        しています。また Corel Draw と Quattro Pro もポーティングが終わ
        り次第、同様に配布しようと提示しています。ARM マシンをお持ちの場
        合、おそらくこれはベストな選択肢です。Corel は ARM ベースの
        Netwinder Linux コンピュータを作っており、また全てのプロダクトの
        ARM Linux 版を提供することはほぼ確実です。完全機能のバージョンや
        サポート付きのバージョンを買うこともできます。両方一緒に購入する
        こともできますし、別々にも購入できます。Linux WordPerfect Fonts
        and Printers
        <http://www.channel1.com/users/rodsmith/wpfonts.html> ページには
        WordPerfect を Ghostscript や内蔵のプリンタドライバ (見たところ
        WP8 (for Linux) についてるプリンタドライバは DOS のものと明らか
        に同じものです。ですからWP8 にあなたのプリンタのドライバがなけれ
        ば、DOS 版から取ってきてしまいましょう) で使うときの設定について
        の情報があります。

     Applix
        Applix はクロスプラットフォーム (各種 UNIX 系、Windows、その他)
        なオフィススイートで、Applix 社より販売されています。Red Hat と
        SuSE はそれが単なるおもちゃにすぎなかった時から、自分たちで販売
        していました。現在の販売元は Applix に戻っています。

     AbiWord
        AbiWord は GPL ベースの WYSIWYG なワードプロセッサ開発プロジェク
        トのうちの一つです。これは、ユーザインタフェースを受け持つ実用的
        な基本プログラムとして制作されました。 GNOME デスクトップ環境と
        の統合作業が進んでいます。

     Lyx
        Lyx は LaTeX のフロントエンドで、非常に将来性があります。詳しく
        は LyX Homepage <http://www.lyx.org/> を参照してください。Klyx
        と呼ばれる、KDE スタイルの LyX もあります。LyX の著者と KDE の発
        案者(instigator)は同一人物です。

     Maxwell
        Maxwell はシンプルな MS RTF フォーマットベースのワープロで、当初
        は商用のプロダクトでしたが現在は GPL で配布されています。

     The Andrew User Interface System
        AUIS は ez という WYSIWYG 型のエディターを持ち、これは基本的なワ
        ープロ機能、HTML 、MIME に完全対応した email 及びニュースグルー
        プのサポート機能があります。AUIS はもうメンテナンスされていませ
        ん。

     Koffice
        KDE プロジェクトは完全なオフィススイートを目指しています。私とし
        ては、まだ晴れ舞台に上がる力が備わっているとは思っていませ
        ん。KDE のワープロは明らかに LyX を基にしています。

     GNOME
        GNOME プロジェクトも各種 GNU ライセンスのオフィス系ツールを目指
        しています。現在はまだ何もありませんが。

  他のベンダのかた、どうかお気軽に、製品情報についてお知らせください。

  15.  印刷可能なものの画面上でのプレビュー

  印刷できるものはほとんど全て画面に表示することもできます。

  15.1.  PostScript

  Ghostscript には X11 用のドライバが付属しており、これは PostScript の
  プレビューアである gv から使うととても便利です。これらのプログラムの最
  新版は、PDF ファイルも表示できるはずです。gv は古いプレビューアである
  "Ghostview" に取って代わっています。 gv の新しいインタフェースは、古く
  て簡単な Athena ウィジェットを使った Ghostscript の GUI よりもずっと格
  好良くて高機能です。

  15.2.  TeX dvi

  TeX の dvi ファイル(デバイス独立ファイル, DeVice Independant files) は
  xdvi を使って X11 上で表示できます。最近のバージョンの xdvi
  は、Ghostscript を呼び出すことにより、special 命令で埋め込んだ
  PostScript ファイルを表示することができます。

  VT100 用のドライバもあります。これは dgvt と呼ばれます。 Linux と
  svgalib しか使えなければ、Tmview という手もあります。

  15.3.  Adobe PDF

  Adobe の Acrobat Reader には Linux 版があります。これは Adobe の WWW
  サイト  <http://www.adobe.com/> からダウンロードすることができます。

  xpdf も利用できます。これはフリーウェアですし、ソースコードも付いてい
  ます。また現在の Ghostview は、gs を使って X11 上で PDF ファイルを表示
  することができるはずです。

  16.  lpd の下でのシリアルプリンタ

  16.1.  printcap の設定

  /etc/printcap には 5 つの設定項目があり、これを設定することによって、
  プリンタが接続されているシリアルポートの設定を全て制御することができま
  す。 printcap のオンラインマニュアルを読んで、br#, fc#, xc#, fs#, xs#
  の意味を覚えておいてください。この属性のうち最後の 4 つは、ポートの使
  い方の設定を示すフラグ設定です。 br# は単なるボーのレートであり、例え
  ば `br#9600' のように設定します。

  stty の設定を printcap のフラグ設定に書き直すのはとても簡単です。書き
  直す必要があるならば、とりあえず stty のオンラインマニュアルを見るとい
  いでしょう。

  stty を使ってプリンタポートを設定し、ファイルを cat コマンドで流し込め
  ば正しく印刷できるようにしましょう。筆者のプリンタポートの設定では、
  `stty -a' の出力は以下のようになります -

       dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2
       speed 9600 baud; rows 0; columns 0; line = 0;
       intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
       eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
       lnext = ^V; min = 1; time = 0;
       -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
       -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
       -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel
       -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0
       bs0 vt0 ff0
       -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase
       -tostop -echoprt -echoctl -echoke

  この設定とシステムの起動時に初期化される設定との違いは、 -clocal,
  -crtscts, ixon だけです。シリアルポートの設定は、プリンタがどのように
  フロー制御を行っているのかによって変わってくることがあります。

  実際のところ、stty コマンドの使い方はちょっと珍しいものです。stty は
  stty の標準入力に接続されている端末を操作するので、与えられたシリアル
  ポートの操作は、先の例のように `<' 文字を使って行います。

  stty の設定がうまくできたら(`cat file > /dev/ttyS2' (筆者の場合)でファ
  イルをプリンタに送れるようになります)、次は
  /usr/src/linux/include/asm-i386/termbits.h ファイルを見てください。こ
  のファイルにはたくさんの #define といくつかの構造体が書かれています
  (このファイルをプリンタに cat コマンドで送り(ちゃんと動きますか?)、こ
  れを下書き用紙にするとよいでしょう)。以下の部分から始まるセクションを
  見つけてください。

  /* c_cflag bit meaning */
  #define CBAUD   0000017

  このセクションには fc# ビットと fs# ビットの意味が列挙されています。読
  者の皆さんも、ボーのレートの後にあるそれぞれの名前が stty コマンドの出
  力行のどれかと一致することに気づかれることでしょう。これは簡単だろうっ
  ていいませんでしたっけ?

  stty コマンドの出力では、これらの設定それぞれの前に「-」が付く点に注意
  してください。これらの数(8 進値です)を全て足してみてください。これはク
  リアしようとしているビットを表すので、その結果は fc# のケーバビリティ
  となります。もちろん、クリアを行った後に直接ビット値を設定することもで
  きるので、単に `fc#0177777' を使うこともできます(筆者はそうしていま
  す)。

  今度は、stty コマンドの出力において頭に「-」が付いていない設定(同じセ
  クションにあるもの)についても同じことを行ってください。本文の例で重要
  なのは CS8 (0000060), HUPCL (0002000), CREAD (0000200) です。ボーレー
  ト(筆者の場合は 0000015)を表すフラグも覚えておきましょう。これらを全部
  足し合わせてください。本文の例ではこの値は 0002275 になります。これが
  fs# の機能です(本文の例では `fs#02275' でうまく動作しています)。

  このインクルードファイルの次のセクションである「c_lflag ビット」につい
  ても、設定とクリアを同じように行ってください。筆者は何も設定しておら
  ず、 `xc#0157777' と `xs#0' だけを使っています。

  16.2.  文字落ちする古いシリアルプリンタ

  Jon Luckey さんの指摘によると、シリアルインタフェースが安物でバッファ
  も小さいシリアルプリンタには、フロー制御の際に本当に止まってしまうもの
  もあるそうです。この文字落ちの問題を回避するために彼が見つけた方法は、
  setserial コマンドを使って Linux マシンの 16550 シリアルポートの FIFO
  を無効にすることです(これを行うには、単に UART のタイプとして 8250 を
  指定すれば良いみたいです)。

  17.  クレジット

  smbprint の関する情報は、Marcel Roelofs さん(<marcel@paragon.nl>) の記
  事からいただきました。

  Netware に接続されたプリンタを使うための nprint に関する情報は、
  Michael Smith さん(<mikes@bioch.ox.ac.uk>)にご教示いただきました。

  「lpd の下でのシリアルプリンタ」の章は Andrew Tefft さん
  (<teffta@engr.dnet.ge.com>)から頂きました。

  ガンマ値と gs に関する情報は Andreas さん
  (<quasi@hub-fue.franken.de>)から頂きました。

  30 秒間に設定されているシリアルドライバの closing_wait オプションに関
  する 2 つの節は、Chris Johnson さん(<cdj@netcom.com>)に頂きました。

  Robert Hart さんは、ネットワーク接続された HP マシン向けのプリントサー
  バの設定に関する素晴らしい説明を送ってくださいました。これは本文書にそ
  のままの形で載せています。

  また、長年に渡って文章中のタイプミス・URL の誤り・間違いを指摘してくだ
  さった多くの方々に深い感謝を捧げます。

  18.  日本語訳について

  日本語訳は Linux Japanese FAQ Project が行いました。翻訳に関するご意見
  は JF プロジェクト <JF@linux.or.jp> 宛に連絡してください。

  改訂履歴を以下に示します。

     v3.12, 28 July 1997
        翻訳: 田所 裕之 <tadokoro@ask.or.jp>

     v3.29, 9 March 1999
        翻訳:

     o  早川 仁 <cz8cb01@linux.or.jp>(1,14 章)

     o  田中雄一郎 <yuitanak@oracle.co.jp>(2,5,6,7 章)

     o  中野武雄 <nakano@apm.seikei.ac.jp>(3 章)

     o  伊藤祐一 <kade@kadesoft.com>(4 章)

     o  やまさき しんじ <yamasaki@sainet.or.jp>(8,9 章)

     o  中谷千絵 <jeanne@mbox.kyoto-inet.or.jp>(10 章)

     o  野村淳一 <nomura@np.bs1.fc.nec.co.jp>(11 章)

     o  関 勝寿 <seki@ylug.org>(12 章)

     o  佐藤亮一 <rsato@ipf.de>(13 章)

     o  藤原輝嘉 <fujiwara@linux.or.jp>(15,16 章)

        訳語統一・校正:

     o  武井 伸光 <takei@cc.kochi-u.ac.jp>

     o  長谷川靖 <yaz-hase@qb3.so-net.ne.jp>

     v3.30, 1999/11/19
        追従: 森本 淳 <morimoto@xantia.citroen.org>

