CUPSを使用したネットワークプリンタ
Vine3.0でLP-8900をネットワークで利用する。3.0からプリンタシステムが LPRing から CUPSになった。幸い、LP-8900はVine3.0では対応しているため 特に新規にドライバやghostscriptはインストールする必要がない。
URL http://localhost:631にアクセス
管理画面が現れるので、プリンタの追加を選択
プリンタ名:lp-8900 を入れ「続ける」
デバイス名Internet Printing Protocol(http)を選択して「続ける」
URI http://10.3.4.64:631/EPSON_IPP_Printer
この値は、WindowsXPでのテスト印字におけるInternet Portのテスト印字のポート名
ベンダー名は「Epson」機種は「LP-8900」を選択
その後テスト印字を行い。
ホームページの印刷で日本語の確認を行う
LP-8900はモノクロプリンタなので印刷のプリンタのプロパティで グレースケールを選択する。カラーのままだと 日本語は表示されたが、jpgの画像が横に間延びしてうまく表示されない。
プリンタの設定は/etc/cups/printers.confにある
# Printer configuration file for CUPS v1.1.21rc1 # Written by cupsd on 2004年08月19日 08時30分13秒 <DefaultPrinter lp-8900-1> Info Location DeviceURI http://10.3.4.64:631/EPSON_IPP_Printer State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer>
/etc/printcapは以下のように書き換えられた。
# This file was automatically generated by cupsd(8) from the # /etc/cups/printers.conf file. All changes to this file # will be lost. lp-8900|:rm=vvine30.ism.co.jp:rp=lp-8900:
/etc/cups/ppdというディレクトリの指定したプリンタ名の設定ファイルがあるので 同じプリンタを使用する場合はこのファイルを名前をプリンタ名にリネームまたは コピーする
注)Vine3.1ではについてなぜか,EpsonコーワからDownloadしたppdファイルではうまく印刷できない。
デフォルトでインストールされているppdファイルを使用する. またOpenOffice1.1.4ではデフォルト日本語フォントでは印刷されないのでここを参考にする。
・プリンタの状態(lpstat -p)
$ lpstat -p printer f850 is idle. enabled since Jan 01 00:00
・プリンタのオプションと現在の設定を確認(lpoptions -p [プリンタ名] -l)
$lpoptions -p f850 -l ProcessColorModel/Color Model: *CMYK Greyscale RGB BitsPerPixel/Ghostscript Bits Per Pixel: 1 8 16 *24 32 MediaType/Media Type: *plain coated transparency MediaWeight/Media Weight: *Normal Thick PageSize/Page Size: Letter *A4 11x17 A3 A5 B5 Env10 EnvC5 EnvDL EnvISOB5 EnvMonarch Executive Legal PageRegion/PageRegion: Letter A4 11x17 A3 A5 B5 Env10 EnvC5 EnvDL EnvISOB5 EnvMonarch Executive Legal PrintQuality/Print Quality: Draft *Normal High Low Resolution/Resolution: 90x90dpi 180x180dpi *360x360dpi 720x720dpi Manual/Sheet Feeder: True *False PrintColors/Colours to be used: C CK CM CMK CMY *CMYK CY CYK K KKKK M MK MY MYK
Y YK
・印刷(lpr -P [プリンタ名] [印刷ファイル名])
$ lpr -P f850 mozilla.ps
または(lp -d [プリンタ名] [印刷ファイル名])
$ lp -d f850 mozilla.ps
渡すデータはps以外のpdf,jpg,gifでもOK。
・プリンタの状態の確認(lpq -P [プリンタ名])
$ lpq -P f850 f850 is ready and printing Rank Owner Job File(s) Total Size active okada 33 mozilla.ps 401408 bytes
・Jobキャンセル(lprm [Job番号])
$ lpr -P f850 mozilla.ps $ lpq -P f850 f850 is ready and printing Rank Owner Job File(s) Total Size active okada 34 mozilla.ps 401408 bytes $ lprm 34 $ lpq -P f850 f850 is ready no entries
--------------------- | | | アプリケーション | | | --------------------- | |ps,pdf,jpg.gif等のデータ | ------------------ CUPS ------------------------------ | | | | ------------------ | | | | pstops | | | Filter1(to ps) | imagetops | | | | pdftops | | ------------------ | | | | ------ | |psデータ | | |---------------- | | gs | RIP(Raster Image Processor) | | |---------------- | ------ | |Raster画像データ | | | | | -------------------------- | | | | --------------- | | | Filter2 |====| PPDファイル | | | | (to プリンタデータ) | --------------- | | | | | | -------------------------- | | | | ------------------------------------------------------- | |プリンタデータ ----------------------- | | | プリンタ | | | -----------------------
CUPSの大体の流れは、アプリケーションから、ps,pdf,image等のデータを渡されると Filter1に通される。ここで、渡されたデータから、PSデータが作成される。次に、 ghostscriptにPIPコマンドで渡され、Raster画像データが作成される。 その後Filter2で、使用するプリンタデータをPPDファイルを参照して作成され、 プリンタに渡される。 CUPSはこれら印刷データ以外にもプリンタの状態をモニタしたり、印刷jobを制御する スケジュール機能も有している。
もし、対応していないときは エプソンコーワ からeplaser-cups-ppd-3.1.4.tgz をDownloadする。
$ tar zxvf eplaser-cups-ppd-3.1.4.tgz $ su # cp -a eplaser /usr/share/cups/model/
さらにghostscriptもインストールする必要がある。
ところで、Vine3.0ではインストール時にX関係の開発環境がインストールされない そこでghostscriptをインストールする前に開発環境をインストールしておく
VFlib-devel-2.25.2-0vl2.i386.rpm libart_lgpl-devel-2.3.16-0vl1.i386.rpm XOrg-devel-6.7.0-0vl5.i386.rpm libpng-devel-1.2.5-0vl4.i386.rpm XOrg-gl-devel-6.7.0-0vl5.i386.rpm librsvg2-devel-2.4.0-0vl4.i386.rpm Xaw3d-devel-1.5-17vl2.i386.rpm libungif-devel-4.1.0-13vl1.i386.rpm atk-devel-1.6.1-0vl1.i386.rpm libxml2-devel-2.6.9-0vl1.i386.rpm freetype2-devel-2.1.7-0vl4.i386.rpm pango-devel-1.4.0-0vl1.i386.rpm glib2-devel-2.4.4-0vl1.i386.rpm xmms-devel-1.2.10-0vl2.i386.rpm gtk2-devel-2.4.4-0vl2.i386.rpm zlib-devel-1.1.4-0vl3.i386.rpm libtiff-devel-3.5.7-6vl2.i386.rpm
などをインストール。
これらはVine3.0のRPMS.develにある。
# /etc/rc.d/init.d/cups restart
ESP GhostscriptはCUPSとの連携を考慮したGNU GSの拡張版であり、 “gimp-print”や“cups”といった独自のデバイス・ドライバを含むことに 特徴がある ここから ESP Ghostscriptを選択してdownload.
cups-devel-1.1.21-0vl0.0rc1.i386.rpm openssl-devel-0.9.7d-0vl3.i386.rpm glib-devel-1.2.10-0vl5.i386.rpm
もインストールしておく。
$ tar jxvf espgs-7.07.1-source.tar.bz2 $ cd espgs-7.07.1 $ configure --with-ijs --with-gimp-print --with-omni --with-x
このままではmake時以下のようなエラーが出る
./obj/icc.o(.text+0x2bb): In function `icmAllocStd_malloc': icclib/icc.c:400: undefined reference to `rpl_malloc' ./obj/gdevifno.o(.text+0xcbd): In function `initwriteimage': src/gdevifno.c:650: undefined reference to `rpl_malloc' ./obj/dscparse.o(.text+0x11): In function `dsc_init': src/dscparse.c:206: undefined reference to `rpl_malloc' ./obj/dscparse.o(.text+0xb9c6): In function `dsc_parse_process_colours': src/dscparse.c:3995: undefined reference to `rpl_malloc' ./obj/dscparse.o(.text+0xbcb2): In function `dsc_parse_custom_colours': src/dscparse.c:4050: undefined reference to `rpl_malloc' ./obj/dscparse.o(.text+0xbfe1):src/dscparse.c:4122: more undefined references to `rpl_malloc' follow collect2: ld はステータス 1 で終了しました make: *** [bin/gs] エラー 1
そこでsrc/dscparse.cの最終行に
return CDSC_OK; } 以下が追加部分 void *rpl_malloc (size_t __size) { if (__size == 0) { __size++; } return malloc(__size); }
を追加する。
$ make $ bin/gs --help ESP Ghostscript 7.07.1 (2003-07-12) (略) Available devices: alc2000 alc4000 alc8500 alc8600 ap3250 appledmp atx23 atx24 atx38 bbox bff bit bitcmyk bitrgb bj10e bj10v bj10vh bj200 bjc600 bjc800 bjc880j bjccmyk bjccolor bjcgray bjcmono bmp16 bmp16m bmp256 bmp32b bmpa16 bmpa16m bmpa256 bmpa32b bmpamono bmpasep1 bmpasep8 bmpgray bmpmono bmpsep1 bmpsep8 ccr cdeskjet cdj1600 cdj500 cdj550 cdj670 cdj850 cdj880 cdj890 cdj970 cdjcolor cdjmono cfax cgm24 cgm8 cgmmono chp2200 cif cljet5 cljet5c cljet5pr coslw2p coslwxl cp50 cups declj250 deskjet dfaxhigh ^^^^CUPSを確認する (略) $ su # make install
gsとESP gsとを区別するために
# cd /usr/local/bin # mv gs esp-gs # cd /usr/bin # mv gs gs.org # ln -s /usr/local/bin/esp-gs gs
としておく。 それ以外Font関係等はGNU GSと同じようにインストールする。
ただし、このままでは/usr/local/share/ghostscript/7.07/lib/CIDFnmapに日本語 の指定をしても表示されない。そこで
ghostscript/7.07/lib/gs_res.psの248行付近の
/FontResourceDir (/usr/local/share/ghostscript/fonts/) readonly .forcedef % pssys'params is r-o を /FontResourceDir (/Resource/Font/) readonly .forcedef % pssys'params is r-o ^^^^^^^^^^^^^^^変更箇所 に /GenericResourceDir (/usr/local/share/ghostscript/) readonly .forcedef % pssys'params is r-o を /GenericResourceDir (/Resource/) readonly .forcedef % pssys'params is r-o ^^^^^^^^^^^変更箇所
に変更する。
これで、
$ gs article9.ps
等で日本語の確認をする。
プリンタ環境がF850+PServerなので、CUPSで印刷できるか試してみる F850は対応ppdがないので、bjc-800でトライする。 上記のLP-8900と同じようにhttp://localhost:631にアクセスして設定する.
PServerはネットワーク環境は
socket://192.168.10.11:9100を選択する。
よって/etc/cups/printers.confは
# Printer configuration file for CUPS v1.1.21rc1 # Written by cupsd on Sat Aug 21 17:18:33 2004 <DefaultPrinter f850> Info Location DeviceURI socket://192.168.10.11:9100 State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer>
となる。
このままでは小さくしか印刷されないので /etc/cups/ppd/f850.ppdファイルの gsのオプションでresolutionを指定する、また用紙サイズもA4を指定する
63行あたりを変更する。
*FoomaticRIPCommandLine: "gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPA&&
USE -sDEVICE=bjc800%A%Z -r600x600 -sPAPERSIZE=a4 -sOutputFile=- -"
^^^^^^^^^^^^^^^^^^^^^^^^追加
一応CUPSを再起動
/etc/rc.d/init.d/cups restart
http://localhost:631で、プリンタのテストページ印刷で Imageable Areaの
PageSize: 8.0x11.3in Resolution: 600x600dpi
を確認する。
これでだいたいA4に印刷されるが若干下が切れる。またjpeg画像がうまく印刷されない これらは、f850用のppdではなくbjc800を利用したので・・・(^^ゞ
/etc/cups/cupsd.confの750行あたりに許可ネットワーク、ホストを追加する
<Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From 192.168.10 <---追加 </Location>
アクセスポートもこのファイルで指定できる。
変更したらCUPSを再起動
2004/08 DE JE2ISM
ちなみに、プリンタがPSプリンタだった場合はどのように動作するか確かめてみた。 職場にはLBP-2260PSというプリンタがあるので接続した。古いプリンタなのでプロトコルは lpdを使用した。 設定は
デバイス:LPD/LPR URL: lpd://10.2.1.1:515/xjprint
ポート名等は、WindowsXPのプリンタのプロパティのポートの構成にあるものを使用した。
ドライバ:Raw Raw Queue
設定後ppdファイルは作成されず、またgsは当然使用していないと思い、/usr/bin/gsをリネームしたが 問題なく動作した。
OMNI: OMNIプリンタドライバは、Ghostscript対応の300以上のプリンタをサポートしたLinux上 のプリンタドライバです。対応プリンタの一例としてCanon BJC、Epson MJ、 HP LaserJet、Brother、Okidata ML、Panasonic KX、Star NX、SAMSUNG SPなどがあり ます。
IJS: これは、プロセス間通信を利用して、プリンタ・コマンドを生成するためのAPI案で あり、全体は「IJS Client」と「IJS Server」という2種のAPIから成る。換言すれば、 IJS対応のプログラムは、これら2つのAPIに沿って作られた2つのプログラム
(IJS ClientプログラムとIJS Serverプログラム)で構成されるわけだ。このうち、
IJS Serverプログラムは、パイプを通じてIJS Clientプログラムと通信し、 プリンタ・コマンドを生成する。また、IJS Clientと同じAPIに沿って記述された アプリケーションは、IJS Serverプログラムと直接通信することができる。なお、 IJS Clientをサポートしたツールとしては、Ghostscriptが挙げられる。
PDC: IJSと同様に、PDCもサーバ用とクライアント用の2つのAPIから構成される。このAPI案 は、Omniプロジェクトが提供するOmniドライバのAPIをベースにしたものである。 また、先のIJSは、ラスタ・プリンタへの対応を前提にしたAPIであり、提供する機能は 非常にシンプルなものとなっている。対するPDCは、PostScript対応プリンタを サポートするための高度な機能を提供している。
PPDファイル: PostScript出力機の解像度など、機種依存の情報を記述したファイル