Linux Printing Usage HOWTO by Mark Komarinski <markk@auratek.com> v1.11, 2 February 1996 日本語訳:佐藤亮一(GFG02131@niftyserve.or.jp) 1. 序 本文書は,LinuxOSが提供しているラインプリンタースプールシステムの使い方を記 述したものです.このHOWTOは Linux印刷システムのインストール・セットアップを 解説した文書である' Linux Printing Setup HOWTO' を補完するものです.この HOWTO で紹介している内容・手法は,BSD 系OS, LinuxOSの双方において同じように あてはまるはずです. 1.1. Linux Printing HOWTO の履歴 Linux Printing HOWTO のこのバージョンは,Grant Taylor <grant@god.tufts.edu> , Brian McCauley <B.A.McCauley@bham.ac.uk>両氏の筆による原版を全面的に改定し たものです.Grant ,Brian氏の HOWTOを出来るだけ踏襲するよう心掛けましたが, 表現法・文書の守備範囲はかなり大幅に変更しました.これによってこのHOWTO はよ り完璧でかつ読みやすいものになったと自負しております.読者の皆様方がこの評価 に同意してくだされば幸いです. 1.2. 履歴 v1.11 文書管理者交代! lpc に関する情報を追加 「困ったときには」に若干の追加を行う グラフィックファイルの印刷を追加! v1.1 表現を多少改善 PostScript 印刷の項を追加 例を解りやすくする試み Linux基本印刷ユーティリティの解説を更新 v1.0 Printing Usage HOWTOの公開を開始 1.3. 著作権および商標 Linux Printing Usage HOWTO v1.11 (c) 1996 Mark Komarinski. Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, author would like to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact Linux HOWTO coordinator at address given below. In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on HOWTO documents, and would like to be notified of any plans to redistribute HOWTOs. If you have questions, please contact Greg Hankins, Linux HOWTO coordinator, at <gregh@sunsite.unc.edu>. You may finger this address for phone number and additional contact information. 本HOWTO に記載されている名称の中には,特定の個人・企業の著作物・商標が含まれ ています.本HOWTOは,これらの著作物・商標名を完全な形あるいは省略形で記載し ています. 特記のないかぎり,Linux HOWTO 文書は当該文書著作者の著作物です. Linux HOWTO 文書の一部あるいは全体を複製・配布することは,使用する物理的・電気的媒介の如 何を問わず,許容されています.ただし,あらゆる複製物には著作権表示を添付して ください.商業的配布も許容・奨励しています.しかしながら,商業的配布を行う際 には著者までご一報くださるようお願いいたします. Linux HOWTO に関するあらゆる翻訳物・派生的著作等は,著作権に関するこの注意書 に従うものとします. 従って,HOWTO から派生した著作物に対し,ここで示した以上の配布制約をつけるこ とは許されません.一定の条件下では,この規則に対する例外を認める場合もありま す.その際には,下記のLinux HOWTO コーディネーターにご相談ください. 換言すれば,Linux HOWTO の内容を出来るだけ多彩な手段を用いて頒布するよう促す ことが私共の願いなのです.しかしながら同時に私共は,HOWTO 文書に対する著作権 を保持したいと考えております.HOTWO を再配布なさろうとする場合には,是非ご一 報下さいますようお願いいたします. ご質問のある方はは,Linux HOWTO のコーディネーターであるGreg Hankins <gregh@sunsite.unc.edu>にまでご連絡ください. 電話番号,その外の情報について もこのアドレスまでご問い合わせください. 1.4. Linux Printing HOWTOのダウンロード 本HOWTO のプリントアウトが必要な方は,Postscript版をダウンロードなさるようお 薦めいたします.これは流行のフォーマットを採用しており,美的なだけでなく読み やすいバージョンになっています.Postscript版は各Linux 配布サイト(SunSITE な ど)で入手できます. 1.5. フィードバック 質問・コメント・訂正などこのHOWTOに対するご意見の宛先は <markk@auratek.com> となっています. 1.6. 謝辞 本HOWTO αバージョンの執筆・通読に携わってくださったすべての方々,有益なコメ ント・助言をいただいたすべての方々に感謝いたします.皆様からいただいたコメン トの一部を本バージョンに取り入れさせていただきました. 著作担当を交代するにあたって,数々の情報を提供してくださったGrant, Brain 両 氏に感謝いたします. 2. Linux での印刷 このセクションでは,ファイルの印刷法,印刷キューを検査する方法,印刷キューか らジョブを削除する方法, 印刷前にファイルを整形する方法,印刷環境を設定する方 法について解説します. 2.1. Linux を使った印刷法の変遷 Linux印刷システム--- lp システム---は Regents of University of California がBerkeley Software Distribution 版の UNIX OS用に開発したソースコード集です. 2.2. lprを使って印刷する LinuxOS上で印刷を行う最も簡単な方法は,印刷するファイルを印刷用デバイスに直 接送致してしまうことです.これを行うための方法の一つは cat コマンドを使うと いうやり方です.ルート権限があれば,以下のようなことも可能です. # cat thesis.txt > /dev/lp 上の例の場合には,/dev/lpが実際の印刷に用いるデバイス(ドットマトリクス,レ ーザープリンター,タイプセッター,プロッター等)のシンボリックリンクとなって います.(シンボリックリンクについての詳細は ln(1)のマニュアルページをお読み ください) 保安上の理由から,プリンターに直接書き込むことができるのはルートと印刷デーモ ンと同じグループに属するユーザーだけです.lpr, lprm, lpq を使ってプリンター にアクセスするようになっているのは,このためなのです. ファイルの印刷に lpr を使わなければならないのも同じ理由です. lpr コマンドは ファイルの印刷に必要な初期化作業をすべて担当します.その後,lpr は別の印刷プ ログラムであるlpd(ラインプリントデーモン) に制御を引き渡します.lpdは プリ ンターに当該ファイルをどのように印刷するかの指示を与えます. lpr は最初に,指定されたファイルをあるディレクトリー ( スプールディレクトリ ー) にコピーします.コピーされたファイルはlpd が印刷を終えるまでこのディレク トリ−に残存します.「これが印刷すべきファイルである」という指示を受けたlpd は,自らのコピーをspawn します(プログラマーがフォーキングと呼んでいる操作で す).このコピーが印刷に従事しているあいだ,オリジナルのlpr は別の呼び出しを 待って待機しています.こうすることによって複数のジョブを同時にキューに入れる ことが可能になっているのです. lpr(1)の構文は以下のようなとてもわかりやすいものとなっています. $ lpr [ options ] [ filename ... ] ファイル名を特定しないと,lpr は標準入力からの入力を待ちます.通常はキーボー ド入力,あるいは他のプログラムの出力を入力として利用します.コマンド出力を印 刷スプーラーにリダイレクトするためには次のようにしてください. $ cat thesis.txt | lpr あるいは $ pr -l60 thesis.txt | lpr lpr コマンドには,コマンドライン引数を与えることもできます.これによってlpr の機能を制御できるのです.多用される引数には, -Pprinter (使用プリンターの 指定), -h (バーストページ印刷の抑制), -s (ファイルをスプールディレクト リ−にコピーする代わりに,シンボリックリンクを張る),-#num (印刷部数の指定) 等があります.以下の例をご覧ください. $ lpr -#2 -sP dj thesis.txt この例では,dj という名前のプリンター用のスプールディレクトリーにthesis.txt というファイルへのシンボリックリンクを張り,このプリンターでlpd を実行します. そして,更にthesis.txt の2部目を印刷します. lpr が認識する全オプションのリストについては,lpr(1)のマニュアルページをご覧 ください. 2.3. lpq を使って印刷キューを見る 印刷キューの内容を確認するためには,lpq コマンドを用います.引数を付けずに実 行すると,デフォールトプリンターのキュー内容を表示します. lpq の出力は様々な用途に役立ちます. $ lpq lp is ready and printing Rank Owner Job Files Total Size active mwf 31 thesis.txt 682048 bytes 2.4. lprmを使ってプリントジョブをキャンセルする 既にキューされているジョブをキャンセルする機能は,どの印刷システムにとっても 有益です.この役割を果たすコマンドは lprm です. $ lprm - 上のコマンドは,このコマンドを実行した人がオーナーとなっている全プリントジョ ブをキャンセルするためのものです.特定のジョブだけをキャンセルするためには, lpq を用いてあらかじめジョブ番号を取得する必要があります.そして次のように, キャンセルしたいジョブの番号を引数として与えてlpm を実行してください. $ lprm 31 これで,デフォールトプリンター上のジョブ31 (thesis.txt)をキャンセルできます. 2.5. lpc を使ってlpd を制御する lpc(8) は lpd が使用しているプリンターを制御するためのコマンドです.このコマ ンドを使えば,プリンター/キューの活性化・非活性化,キュー内エントーリーの再 編,プリンター/キュー状況の取得などの作業が実施できます.lpc が最も活躍する のは,一台のマシンに複数のプリンターが接続されているような環境を設定する場合 です. $ lpc これでlpc が起動します.初期設定では,lpc は対話モードで起動します.ユーザー はここでコマンドを入力することができます.また,コマンドライン引数の形でlpc のオプションを指定するという方法もあります. $ lpc status all 使用可能なコマンドの一覧はlpdのマニュアルページにあります.しかし知っておく 必要があるのは,少数の主要コマンドだけです.以下の表でoptionと記した箇所には, 特定のプリンター名(lp,print等),あるいは all (全プリンターを対象とした場合) を代入します. disable option - 以降,新しいプリンタジョブが入ることを禁止 down option - プリンター上の全印刷を停止 enable option - 印刷キューに新しいジョブが入ることを許可 quit (or exit) - lpcを終了 restart option - 当該プリンター用lpd を再起動 status option - プリンターの印刷状況を表示 up option - すべてを可能にし,lpd を起動 3. 様々な問題 このセクションでは,Linuxで印刷をする際に知っておいたほうがいい様々な問題を 解説します. 3.1. 印刷前の整形 ASCIIファイルは大抵印刷用に整形されてはいないので,実際に印刷する前に何等か の方法で整形を施しておくとよいでしょう.ここでいう整形には,表紙の印刷・各頁 にページ数を振る・マージンの設定・ダブルスペース・インデント・多段組などが含 まれます.こうした作業には pr のようなプリプロセッサを使うのが普通です. $ pr +4 -d -h"Ph.D. Thesis, 2nd Draft" -l60 thesis.txt | lpr 上の例の場合, pr はthesis.txtというファイルを取得し,最初の3ページを飛ばし てから (+4),ページ長を60行に (-l60)セットし,ダプルスペース (-d)で,"Ph.D. Thesis, 2nd Draft"をヘッダとして各ページ上端に付け加えます(-h).Lpr はその 後 pr の出力をキューします.pr の詳しい使い方についてはオンラインマニュアル ページをご覧ください. 3.2. 環境変数 PRINTER Linux印刷システムのコマンド類はいずれも, -P オプションを受け付けます.これ は,出力に用いるプリンターを指定するためのオプションです.プリンターを指定し なかった場合には,デフォールトプリンターが出力デバイスとなります. 出力プリンターを毎回指定する代わりに,PRINTER という環境変数に使用するプリン ター名を設定することもできます.環境変数の指定法は,シェルのよって様々です. bashの場合には,以下のようになります. $ PRINTER="printer_name"; export PRINTER cshの場合なら次のようにします. % setenv PRINTER "printer_name" こうした環境変数設定コマンドは,ご自身のlogin スクリプトの中に置くこともでき ます(bash の場合なら, .pro, csh の場合なら .cshrc です)もちろんコマンド ラインから実行することもできます.( 環境変数の詳細についてはbash(1), csh(1) のマニュアルページをお調べください) 3.3. グラフィックファイルの印刷 プリンターを用いたグラフィックファイルの印刷の方法は,グラフィックを変換する フォーマットとプリンターの種類によって様々です.通常,ドットマトリクスプリン ターは問題外となります.これは機種毎にグラフィックの処理法が異なっているため です.この場合には,お使いのプリンターがEpson あるいは IBM ProPrinter互換機 かどうかを調べるのが最善の選択です.互換機であれば,まずグラフィック ファイ ルをPostScriptに変換し, しかる後に Ghostscript (次節参照) を使ってグラフィッ クを印刷します. レーザープリンターをお持ちの方は, 話はやや簡単になります.レーザープリンター にはPCL互換のものが多いからです.従って機種選択にも若干の自由があります.プ ログラムの中には直接PCL出力を行うものもあります.こうした機能がない場合には, NetPBM のようなPCLへの変換機能を持つプログラムを使うことになります.最後の選 択肢は,ghostscriptを利用する方法です. (次節をも参照してください). 最上の方法は,NetPBM やGhostscript のようなパッケージと,グラフィックファイ ルを自動的に処理するマジック フィルターの両方をインストールすることです. 3.4. PostScript ファイルの印刷 Postscriptインタープレターを備えたプリンターならPostScriptファイルの印刷は簡 単です. 単に lpr を実行しさえすれば,あとはプリンターが全部面倒を見てくれま す.この種のプリンターをお持ちでないなら,他の方法を考えなけれはいけません. 幸いなことにポストスクリプトを解読し,他のプリンターが解釈できる言語に翻訳す るプログラムがあります.このなかで最も著名なものは,なんと言っても Ghostscriptでしょう. Ghostscriptの機能はポストスクリプトファイルの内容をあますことなく,プリンタ ーが理解できるコマンドに置き換えることにあります.Ghostscriptを用いてポスト スクリプトファイルを印刷する場合のコマンド例を以下に示します. $ gs -dSAFER -dNOPAUSE -sDEVICE=deskjet -sOutputFile=|lpr thesis.ps 注:上の例では,Ghostscript の出力を -sOutputFile というオプションを使って lpr にパイプしています. Ghostview は Ghostscript のX Window System 用インターフェースです.これを使 えば,ポストスクリプトファイル印刷する前に .プレビューすることができます. 3.5. TeX ファイルファイルの印刷 TeXファイルを印刷する最も簡単な方法の一つは,これをPostscript形式に変換して から,Ghostscriptを用いて印刷することです.この方法を用いるためには,まずTeX ファイルをDVIファイル(DeVice Independent規格)に変換する必要があります.これ は,tex(1)コマンドの仕事です.ついで,このDVIファイルをPostScriptファイルに 変換することになります.この作業には,dvips を用います.次のようにすれば上述 の作業が実行できます. $ tex thesis.tex $ dvips thesis.dvi これで印刷の準備が整いました.上に説明したように,PostScriptファイルが出来上 がっています. 3.6. troff で整形したファイルの印刷 $ groff -Tascii thesis.tr | lpr あるいは,お好みに応じて次のようにすることもできます. $ groff thesis.tr > thesis.ps この場合には,上で示した方法でPostScriptファイルを印刷してください. 4. よくある質問とその答え Q1. 階段効果を回避するにはどうすればいいのでしょう? A1. 階段効果が発生するのは,行の末端にキャリッジリターンを想定しているプリ ンターがあるためです.DOS風に CR/LF を行末とするプリンターもあれば, UNIX 風 にLFだけを行末をするプリンターもあります.この問題を解決する最も手っ取り速い 手段は,プリンターにこのモードを切替える機能がないかどうかを確かめてみること です.DIPスイッチを切替えるようになっている機種もあれば,印刷ジョブ開始時に 特定のエスケープシークエンスを送ってやる機種もあります.後者の場合には,フィ ルターを作る必要があります.(Q2 及び Foster95bを参照してください) 手軽なのは,コマンドラインでフィルターを使う方法です.以下にその例を示します. $ cat thesis.txt | todos | lpr Q2. フィルターとはなんですか? A2. フィルターとは標準入力(stdin)を読み込み,これに何らかの加工を施した上 標準出力(stdout)に出力する機能を持つプログラムです.フィルターはテキスト処理 を含む多彩な目的に使われています. Q3. マジック フィルターとはなんですか? A3. マジック フィルターとは ファイルタイプに応じた作業を実行するフィルタ ー です.単純なファイルの場合には通常の方法で印刷し,Postscript ファイルその 他のフォーマットの場合には,別の方法(ghostscript)で印刷するといった処理を行 う機能を持っています.マジックフィルターの代表格は magicfilter と APSfilter でしょう. この種のフィルターには,フィルターをインストールするだけではなく,フィルター が必要とするプログラムをもインストールしなければならないという問題点がありま す. 5. 困ったときには? この節では,印刷システムに関連する一般的問題点を取り扱います. プリンターが使えない場合には,以下の諸点をチェックしてください. 他の印刷ジョブは機能していますか? (application) lpd は走っていますか? (lpc でチェックできます) (print controller) ルートはプリンターに直接何かを送致できますか? (print services) DOSからなら印刷できますか? (cable/printer problem?) 上述の質問の答えは,問題解決に役立つものとなります. このセクションについての提言を<markk@auratek.com>宛にお寄せ下さい. 6. 参考資料 この節では,Linux印刷システムに関する参考資料を紹介します.出来るだけ重点を しぼりこんだレファレンスを提供するように努めておりますが,もし欠落している重 要文献があるようでしたら,是非著者までご一報くださるようお願いいたします. USENET グループで質問される前に,以下の点を確認してください. プリンターはジョブを受け入れているか? (lpc(8)を使って確認すること) ご質問に対する回答はこのHOWTOの範囲内のものですか?(Printing SetupHOWTOに質問するという方法もある) この二つの質問に対する答えが両方とも「YES」の場合にも,質問を提出する前に更 に2回考えてみてください.本当にニュースグループに質問する時には,背景事情を 正確に記述してください.「lprが使えません.助けてください」といったような質 問はなさらないでください.この類の質問はほとんどの人が無視することでしょう. 使用中のカーネルのバージョン,どのようにエラーが発生するのか,システムからの エラーメッセージなどの情報も質問に記載するようにお願いします. Foster, Matt. Linux Printing Setup HOWTO このHOWTO を補うべき文書.内容:印刷ソフトのセットアップ,設定 Welsh, Matt. Linux Installation and Getting Started Linux初心者向け入門文書の精髄 オンラインマニュアルページ cat(1) ファイルのconcatenate と 印刷 dvips(1) TeXの DVIファイルをPostScriptに変換 ghostview(1) Ghostscriptを用いてPostScript文書の印刷結果を表示 groff(1) groff 文書整形システム用フロントエンド gs(1) Ghostscript インタープレター・ビューアー lpc(8) ラインプリンター制御プログラム lpd(8) ラインプリンタースプーラーデーモン lpq(1) スプール キュー examination プログラム lpr(1) off-ライン プリンター lprm(1) ラインプリンターのスプーリングキューからジョブを削除 pr(1) テキストファイルを印刷用に変換 tex(1) テキスト整形,タイプセットプログラム USENET ニュースグループ comp.os.linux.* Linux 情報の宝庫 comp.unix.* UNIX OS関連の話題