- ベストアンサー
そもそもLinuxで作ったファイルを印刷するには?
リナックスサーバーにcupsというパッケージを導入して、 いろんなLAN上のクライアント機(XPとか)から印刷できるようになったのですが、 そもそもリナックスで作成したファイルをコマンド行から印刷するにはどうすればよいのですか。 リナックスサーバーがLAN上の各種クライアント機に印刷サービスを提供できるのなら、 このサーバーに直接ログインして印刷できないはずはないと思って、いろいろ試してるのですが・・・。 どうも、いろんなサイトを見て回ったかぎりではlprとかlpという印刷用の命令があるのですが、 この2つの命令の違いというのも、良く分からないし、 実際にこの命令を実行してみても、プリンターが動く気配はないし・・・(汗。 誰か教えてください~。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、出力する方法が見つかったようで、良かったです。 (怒ったりはしませんので、、) ちなみに、うちのlinux機も、プリンタへのデータは無加工でネットワークプリンタ(postscript対応)に渡す設定にして使っています。(設定はcupsを使わずに、直に、/etc/printcapを書く方法でやりましたが) で、テキストファイルはコマンドでpostscriptに変換してから、プリンタに送っています。 (linux上のブラウザやオフィスソフトなどからはpostscriptでデータが出てくるので、そのままプリンタに渡せばプリントできるので) 以下、若干コメント ・全体の運用方針の整理 linux機、windows機を含めて、どのよう(どのアプリケーション、ファイルから、どういう手順で(どの経路でデータを渡すか、どこでデータ加工するか))にプリントするか、を一度整理されるほうが良いかと思います。 ・Windowsからのプリント ネットワークプリンタということですので、Windowsから直接 //printer.domain/ に出力させるほうが楽な気がします。(linux機の運用とは切り離す) ・linux機からのプリント 場合によっては、プリンタにrawでデータを渡す必要も出てくるかもしれません。(例えば、linux上のオフィスソフトやブラウザからプリントアウトする場合)。 これに備えて txt->データ変換してプリント rawでプリント の二つを用意することを考えておいたほうが良いかもしれません。 (例えば、ファイル変換する設定とは別に、rawで出力する設定をもうひとつ作って、用途に応じて(プリンタ名で)使い分ける、という手が使えるかと思います。)
その他の回答 (3)
- foobar
- ベストアンサー率44% (1423/3185)
#2さん回答へのコメントから想像すると、 1. プリンタへは正常にデータが(書式等の加工がされずに)渡されている 2. ただし、データの形式(書式)がプリンタで印刷可能なもの(postscript?)になってないので、プリンタ側で無視している(印刷しない) という状況のような気がします。 ネットワーク接続のレーザプリンタということですので、postscriptに対応していると仮定して(どういうデータ形式に対応しているのかは、プリンタの取扱説明書に書かれているかと思います。) テキストファイルをポストスクリプトに変換して出力すれば、出力できそうに思います。 ポストスクリプトへ変換するプログラムは ls /usr/bin *ps で text2psとかjtopsというプログラムを見つけ出すなどして、捜し出すことになるかも。 (cupsでデータ変換するプログラムを指定することもできたかと思いますが、そういう設定をしたことがないので、、)
お礼
foobarさん、ご返信ありがとうございます。 怒らないでほしいのですが、実はリナックスサーバー自体にプリンタードライバーが入っていませんでした。 というのも私のリナックスサーバー構築教科書では プリントサーバーを立てる際、サーバー自体にはドライバーを持たせずに 各クライアント機ごとに専用のドライバーをインストールして、サーバー機はプリンターポートを提供するだけという手法が紹介されていました。 しかも私のプリンターはハブに接続してあるため、サーバー機はプリンターポートすら提供していませんw サーバー機では単にcupsが起動しているだけという状態になっていました。 今回リナックス用のプリンタードライバーをサーバー機に入れ、 cupsの次の設定を変更したところ、サーバーのコマンド行で印刷できるようになりました。 Device: Internet Printing Protocol → AppSocket/HP JetDirect Device URI: http://printer.ドメイン名:631/ipp/ → socket://printer.ドメイン名:9100/ Make: Raw → KONICA MINOLTA(これは多分プリンタードライバー名?) お気づきかも知れませんが、そのとおりです。 上記設定後はウィンドウズ機から印刷できなくなってしまったのです。 恐らく今まではウィンドウズ(クライアント機)のプリンタードライバーからcupsへ送られてきたデータを加工せずに、そのままプリンターへ転送していたのに対し、 今回の変更に伴い、cupsは受け取ったデータを更にリナックス用のプリンタードライバーで加工してからプリンターへ渡すため、プリンターが混乱し、ウィンドウズから印刷できない状態に陥ってしまったと予想しています。 cupsをうまく設定すればウィンドウズでもリナックスでも関係なく同一プリンターを利用できるようになると思うのですが、これについては少しcupsについて学習する必要がありそうです。 しかし最近なんと長期出張を言い渡されてしまったためプリントサーバーを本格的に構築するのは出張から帰ってきてからかな・・・ お気に入りのパソコンは出張に持っていきますけど、レーザーを持っていくのは、さすがに骨ですからね・・・w
- Lean
- ベストアンサー率72% (435/603)
下記のページあたり参考になりませんかね? UNIX 環境から印刷する方法 http://www.tohoku.ricoh.co.jp/barcode/printer/dist/printserver/documents/japanese/print/unixport.html
お礼
Leanさん、ご返信ありがとうございます。 なんと、ご紹介いただいたページは、 先日私も訪問して、GUIの解説ページなんか用は無いと足早に立ち去ったサイトでした!(リコーじゃないし) しかし、よく見ると私が欲しているコマンド行から印刷する方法も解説されていました。 スミマセン、注意深く見ないで。 早速コマンドを実行してみると・・・ エラーメッセージが表示されるわけでもなし、 成功メッセージが表示されるわけでもなし、 すぐさま次命令を要求するプロンプトが返ってきました。 しかしプリンターは音沙汰なしです・・・。 でも1個発見したことがあります。 ブラウザーでCUPSにアクセスして、 プリンターの「Show Completed Jobs」というボタンを押してみたのです。 すると、なんと先ほどlprコマンドで指定したファイルが表示されているではありませんか! すなわちcupsは、当ファイルをすでに印刷済みと認識しているようなのです!! ということは、どうもcupsの出力が完了した直後からプリンターにデータが渡る直前までの間に、何か思わしくない事態が発生しているようですね。 またしても迷宮入りしそうな質問をしてしまったわけですが、 引き続き何か助言等ありましたら、教えてください!! ところで、どうでもいいけどオレのキーボードさっきからエンターキーがすごい固くて、思いっ切り叩かないと確定してくれない・・・^^;
- foobar
- ベストアンサー率44% (1423/3185)
Linuxからのプリンタ出力と言っても、千差万別(?)ですので、、 どういう形式のファイル(単純なテキストファイル?画像データ?)を出力したいのか、 繋がっているプリンタの出力形式(ポストスクリプト対応のプリンタ?) プリンタの接続(Linuxの稼働しているPCに直接繋がってる?ネットワーク経由の接続?) cupsで、どんな設定をしたか あたりを書かれると、より適切な回答が得られるかと思います。 例えば、プリンタ設定で特にフィルタ等を設定していなくて(cups等では出力するファイル形式を判定して、自動的にフィルタを通してデータ変換するような設定があったように思います)、ポストスクリプトプリンタ、cupsでlprに対応できる設定(だたかな?)がされていて、今繋がっているプリンタが標準プリンタ(名称 lp)になっていれば、 cat textfile.txt | a2ps | lpr (a2psはテキストファイル->ポストスクリプトのフィルタ) みたいな方法でプリントアウトできるかと思います。 (あるいは、設定したプリンタの名称が lp1だと cat textfile.txt | a2ps | lpr -P lp1 だったかな。 また、Linux機上でブラウザを立ち上げて、そこからプリントする、なども可能かも知れません。
お礼
foobarさん、ご返信ありがとうございます。 適切な解答を頂くため、次のとおり補足します。 印刷したいのは単純なテキストファイルです。 テキスト以外のファイルもいずれ印刷したくなるかも知れませんが、 ひとまず今はテキストファイルの印刷方法が教えてもらえれば満足です! プリンターがポストスクリプトに対応しているかは、ちょっと分からないです~。 けっこう最近買ったイーサネット対応のカラーレーザーなのですよ! ですのでひょっとしたら対応しているかもしれませんが、してないかも知れません・・・。 調べる方法とかありますでしょうか。 接続はサーバーに直接ではなくハブにつないでます。 cupsの設定ですが分かる限りでは プリンター名はprinterとなっていました(なんて安直なっ!) Device URIというのがhttp://printer.ドメイン名:631/ipp/となっています。 さて、お教えいただいたコマンドですが、 どうやら私のサーバーにはa2psというのが入っていないようです。 ここでa2psを入れるという作業はひとまず置いておいて先にNo.2 Leanさんにご紹介いただいたサイトを読んで試したところ あることが分かりました。 これに関してはLeanさんへのお礼欄へ記述しますので、よければ目を通していただいて再回答をお願いします。
お礼
foobarさん、ご返信ありがとうございます。 なるほどプリンターがポストスクリプトに対応さえしていれば、 ドライバーを入れなくてもポストスクリプトに変換して渡せば印刷できるのですね。 ウィンドウズでプリンターを追加する際、サーバーを介さず、直接ネットワークプリンターを指定したら、難なく印刷できました。 こんな簡単に印刷できてしまうと、頑張ってcupsを構築した意味が薄れてきてしまいますね~。 だけど、きっとcupsを利用すれば何か他の利点があるのだと信じたいのでcupsについて勉強します。 リナックス機へログインして行う操作といえば各種デーモンの設定ぐらいですので、 リナックス機にGUIアプリケーションは入れてないのです。 オフィス等はMS製を長年使い慣れてしまったので・・・w ただし、リナックスとウィンドウズで同一プリンターを使用するために、 プリンター名を変更して同一プリンターをcupsへ複数登録するという手法を試してみました。 この手法はなかなか巧妙で面白いですね!