CUPSを使用したネットワークプリンタ

更新日2007-02-09 (金) 10:32:26

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

CUPSのプリントの流れ

             ---------------------
             |                   |
             | アプリケーション  |
             |                   |
             ---------------------
                       |
                       |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にある。

CUPSを再起動

# /etc/rc.d/init.d/cups restart

ESP Ghostscriptのインストール

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

等で日本語の確認をする。

Canon F850+coregaのプリンタサーバ(PServer)

プリンタ環境が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

参考1(PSプリンタ)

ちなみに、プリンタがPSプリンタだった場合はどのように動作するか確かめてみた。 職場にはLBP-2260PSというプリンタがあるので接続した。古いプリンタなのでプロトコルは lpdを使用した。 設定は

デバイス:LPD/LPR URL: lpd://10.2.1.1:515/xjprint

ポート名等は、WindowsXPのプリンタのプロパティのポートの構成にあるものを使用した。

ドライバ:Raw Raw Queue

設定後ppdファイルは作成されず、またgsは当然使用していないと思い、/usr/bin/gsをリネームしたが 問題なく動作した。

参考2(用語)

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出力機の解像度など、機種依存の情報を記述したファイル

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS