FreeBSDでもプリンター OKI 3400N で印刷できる(その2)

前の記事の続きです。

6. 印刷オプション用ファイルの作成

適当な名前のファイル、例えば、~/.oki_option を作ります。
ひとつの行に「オプション名(c、p、sなど) バリュー」(例えば「s 1」または「s=1」)と書きます。#以降はコメントです。オプションの内容についてはfoo2hiperc-wrapperを読んでください。
私の場合は、とりあえず下の4行だけで十分でした。

#~/.oki_option
c # color mode
p 1 # paper size A4
s 1 # source(紙の挿入もと)
t # トナー節約mode

7. Filter scriptの書き換え

印刷オプションファイル ~/.oki_option を読み込むように、フィルタースクリプトを書き換えます。今度はちょっとだけ複雑です。

#!/usr/bin/perl
# File: /usr/local/libexec/ifoki_foo
my $switch = "";
my $file = `ls ~/.oki_option`;
if (open F,"$file") {
    while(<F>) {
        /^\s*#/ and next;
        /^\s*$/ and next;
        s/#.*$//;
        s/^\s+//;
        s/\s+$//;
        s/[\s=:]+/ /;
        $switch .= " -$_";
    }
    close F;
}
$switch ||= " -c -p 1 -s 1";
exec "/usr/local/bin/foo2hiperc-wrapper $switch";

これで一応印刷オプションを指定出来るようになりました。しかし、設定を変えたい度に、wrapperとにらめっこしながら、~/.oki_optionを書き換えるというのは、あまりスマートとは言えません。何かもっとよい簡単な方法は無いでしょうか。

8. 対応可能プリンタ機種名

このドライバー群で対応可能なプリンタのモデル名を列挙しておきます。FreeBSDだけでなくLinuxでも大丈夫でしょう。

Oki Data C3100, C3200, C3300, C3400, C5100, C5250, C5500, C5600, C5800
HP Color LaserJet 1600, 2600n, CP1215
Konica Minolta magicolor 2530 DL, 2490 MF
Xerox Phaser 6115MFP
Konica Minolta magicolor 1600W, 1680MF, 1690MF
Konica Minolta 2480 MF
HP Color LaserJet 1500
Kyocera Mita KM-1635
Samsung CLP-300, CLP-310, CLP-315, CLP-600, CLP-610, CLX-2160
Xerox Phaser 6110MFP
Lexmark C500
LaserJet M1005
Minolta/QMS 2300 DL, 2200 DL
HP LaserJet 1000, 1005, 1018, 1020, P2035

FreeBSDでもプリンター OKI 3400N で印刷できる

数週間何とかしたいと思っていたことがようやく解決しました。FreeBSDでOKI3400Nの印刷が可能になりましたので、報告します。OKI3400Nに限らず、種々プリンターに応用出来ます。

1.ドライバーのインストール

まず、portからドライバーをインストールします。私のはFreeBSD8.1の未更新portでした。

> cd /usr/ports/print/foo2zjs
ここからルートで作業します。
> su
# make install clean
少し時間がかかります。成功すると、/usr/local/binにドライバーが多数インストールされます。

2. ドライバーを選ぶ

このドライバーの中から適合するものを見つけます。

# ls /usr/local/bin | grep foo
foo2hiperc
foo2hiperc-wrapper
……………
foo2hiperc-wrapperはshell scriptですので、中身をのぞいてみます。
# cat /usr/local/bin/foo2hiperc-wrapper
うん。C3400がありました。間違いなくこのドライバーです。ただ、私のshellはtcshですが、どういうわけか、PATHの記述を書き換えないと、’gs not found’エラーが発生します。

3. Filter script

簡単なフィルタースクリプトを書きます。

#!/bin/sh
# file: /usr/local/libexec/ifoki_foo

/usr/local/bin/foo2hiperc-wrapper -c -p 1 -s 1

コメントを除くとたった2行です。オプションはwrapperのなかに説明されていますので、よく読みましょう。

4. printcap

いよいよ/etc/printcapの設定です。

私の場合、OKI3400Nはランにつながっていて、デフォルトで使いますので、以下の内容になります。

lp|oki|oki3400n:\
:lp=9100@oki:sh:\
:sd=/var/spool/output/oki:lf=/var/log/lpd-errs:\
:if=/usr/local/libexec/ifoki_foo:

lp=9100@okiがランで使う場合のミソです。okiはランにつながっているプリンターのホスト名、9100はポート番号です。プリンターのウエブ設定を見るとポート番号が分かります。直接つながっている場合はもっと簡単ですね。ディレクトリを作るのを忘れないでください。

5. これで印刷出来ます。めでたし。

しかし待てよ。印刷の設定はどうするのか。オプションを書き込んだファイルをフィルタースクリプトに読ませるようにしたらどうかな。それだと、子供とかには印刷の設定が出来ないことになってしまうが、仕方ないか。(次に続く)