2018年1月20日土曜日

BrotherのMFC-650CDプリンターをFreeBSDから使う

誰かの役に立つとも思えないのだが、覚え書きの意味でも書いておく。
BrotherのMFC650-CDのプリンターをFreeBSDから使う方法について調べて、どうにか印刷できるようになった。
ghostscriptでもいけたかもしれないが、なぜか常用の環境ではデバイスを使えなかったので、
Linux用のドライバで動かしてみた。Linux用のドライバも、日本語サイトにはダウンロードのリンクが
見当たらず、英語のサイトからの入手となった。

ドライバは、MFC-650の場合はMFC-660用が使えた。最初はMFC-640用のものをつかったのだが、
生成されたイメージを送りつけても無視されて悩んだ。北米向けなのだと思うが、自分のプリンターの型番に
近いものを試して見つけることになる。

ドライバのrpmには、プリンター用イメージ生成プログラム(と、もしかするとshared object)、
それらの設定ファイル、PostScriptやPDF、テキストファイルからppmrawへ変換するスクリプト、
lprのフィルタとして登録するスクリプトなどが入っている。

展開したら、つじつまの合うように配置して、ppmrawへの変換スクリプト
(psconvertij2)のexpおよびsedを、それぞれgexpおよびgsedに書き換えれば良い。
(coreutilsとgsedパッケージが必要)
lprのフィルタ(filtermfc660cn)は書き換えるのが面倒だったので、決め打ちの
スクリプトを書いて使っている。(以下)

#! /bin/sh
BASE=/usr/local/Brother/Printer/mfc660cn
sh $BASE/lpd/psconvertij2 $BASE/inf/paperinfij2 $BASE/inf/brmfc660cnrc | $BASE/lpd/brmfc660cnfilter -pi $BASE/inf/paperinfij2 -rc $BASE/inf/brmfc660cnrc

ドライバのrpmを/で展開すると、/usr/local/Brother/と、/usr/bin/(および/usr/lib/)にファイルが配置
されるので、/usr/local/Brother/はそのまま使い、/usr/bin/と/usr/lib/に出てきたコマンドおよび
ライブラリは/compat/linux/へ移す。(ライブラリは無い場合もあるようだ)

あとは、上記のような直がきスクリプト、もしくは添付されているフィルタースクリプト(filtermfc660cn)を
修正して、/etc/printcapに登録すれば利用できる。用紙サイズなど印刷パラメータは、上記スクリプトの
中の-piオプションで指定しているファイルに記述されている。パラメータ値は、Linux用のコンフィグレーション
プログラム(brprintconf_mfc660cn)を実行すると出力されるヘルプで確認できる。


 以上