[HOME] > PC-UNIX Tips > PostscriptPrinterの設定

PostscriptPrinterの設定

Created: 2000.01.23

PC-UNIX Tips

はじめに

今年最初の取り組みですが、昨年購入したプリンタに、 Postscript形式ファイルを印刷する設定です。ただ、はっきり言って 今回もちょっと無茶なことををやっています:-)皆さんは、ちゃんと 確認してからやってください....。

参考文献

Japanese Printing mini HOWTO Rel.0.0.1a
今回、非常に参考にさせて頂きました。感謝です。
Run Run Linux(ISBN4-7561-1605-1)
[TEXの印字環境]がPostscript印刷設定の参考になります。
Linux関連リンク/周辺機器
[プリンタ(パラレルポートデバイス)]が非常に参考になります。

プリンタ購入

昨年、やっとプリンタを購入しました。当初は、「印刷なんか、せーへん。 紙ももったいないし、データはファイルを直接見たらええんじゃ。」と、 プリンタは買いませんでした。

しかし、年賀状印刷、また携帯には、やはり紙ベースが一番ってことで、 あっさりポリシーを翻し(私は朝令暮改のB型:-)、購入の運びとなりました。 「印刷スピードは遅くてもええけど、カラーがええなあ。でも、やっぱり安い やつ。」ってことで、Canon BJC-430J Liteを購入しました。

# 最近は、印刷スピードがあまりにも遅いので、ちょっと後悔していますが...。

また、Linuxで利用するプリンタを購入する場合は、 パラレルポートプリンタの対応デバイス情報がまとめられている、 LinuxPralellPortHomePageを参考にしてください。

ケーブル接続

本体との接続は、パラレルケーブルで接続してます。環境をまとめておきます。

PC:
FMV-DESK POWER(FM V-499D3)
Printer:
CANON BJC-430J Lite
Cable:
パラレルケーブル(IEEE1245)

カーネル再構築

Linuxでプリンタを利用する場合には、場合によってはカーネルを再構築する 必要があります。私の場合は、カーネルを再構築しました。以下に手順を まとめます。

カーネルの再構築(-linux-2.0.28-)

Pararellプリンタを利用できるようにカーネルを再構築する。

# cd /usr/src/linux
# make config
...............
*
* Character devices
*
...............................
Parallel printer support (CONFIG_PRINTER) [Y/m/n/?]
...............................
# make depend
# make clean
# make zlilo
# rdev -R /vmlinuz 1
# reboot
	

システム起動時のlpd起動設定

/etc/rc.d/rc.inet2でlpdを起動するように設定。

.........
IN_SERV="lpd"
.........
	

BIOSのパラレルインターフェイスのアドレス変更

変更後に、dmesg出力確認。

Serial driver version 4.13 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16550A
tty01 at 0x02f8 (irq = 3) is a 16550A
lp1 at 0x0378, (polling)
PS/2 auxiliary pointing device detected -- driver installed.
	

テキストファイルの印刷設定

Japanese Printing mini HOWTOが非常に参考なりますが、 プリンタに印刷する場合、プリンタがもつプリンタ制御コードと呼ばれる コード体系に変換してやる必要があります。テキストファイルをそのまま 印刷すると、日本語などが文字化けして印刷されてしまいます。

そこで、プリンタ設定で、テキストファイルの文字コードを利用するプリンタ にあったプリンタ制御コードに変換するフィルタを設定する必要があります。 フィルタが、日本語(EUC,JISなど)文字コードをプリンタ制御コードに変換して くれます。

/etc/printcap設定

/etc/printcapでプリンタに関する様々な設定(フィルタ設定など)を 記述します。 今回は、Canon BJC-430J-Liteですので、フィルタに/usr/lib/lpfを 利用しています。 以下に、/etc/printcapを示します。

# 実は、このプリンタ制御コードがわからず、最初はEpson製プリンタで

# 採用されれている/usr/lib/escpfを使用していました....。

# でも、/usr/lib/lpfで本当にええのか、ちょっと自信ないです....。

lp|Canon BJC-430J Lite:\
	:lp=/dev/lp1:\
	:sh:mx#0:\
	:if=/usr/sbin/lpf:\
	:of=/usr/sbin/lpf:\
	:sd=/var/spool/lpd/lp1:\
	:lf=/var/spool/lpd/lp1/lp-err:
	

プリンタ用スプールディレクトリ作成

プリンタデーモン(lpd)が利用するスプール用ディレクトリを 作成します。

# mkdir -p /var/spool/lpd/lp1
# chown -R root.lp /var/spool/lpd
# chmod -R 755 /var/spool/lpd
	

プリンタデーモンを再起動

/etc/printcapを修正した後は、設定を反映させるために、プリンタ デーモンを再起動します。

# lpc restart all
	

テスト

% lpr test.txt
	

Poscscriptファイルの印刷設定

これが一番苦労しましたX-) やはり、知識不足が原因でしたが、特に gsでPostscript形式ファイルにフィルタをかける点、フォント設定(VFlib)に ついて、理解に苦しみました。

# 実は、まだ完全には理解できてません...。

PJE-0.1からの必要なパッケージ手動インストール

今回、もっともあぶない作業が、この作業です。

次以降で説明する作業をやってみたのですが、どーも参考にしている書籍や HOWTOの説明とファイルパスなどが異なったりしていて設定がやりにくかったの で、手元にあったPJE-0.1のCD-ROMからgs,gv,vflibなどを手動で(おいおい)、 インストールしてしまいました(自爆)。要は、単にgunzip + tarでコピーしただ けでですが、必要なライブラリなど泥縄的にインストールしています。ですんで、 環境がむちゃくちゃになった可能性があります。真似しないでください...。

[インストールしたパッケージ(PJE-0.1)]

[ソフトウエアバージョン]

ghostscript
3.33
ghostview
3.5.8

kconfig.psの設定

GhostScript(gs)が使用する日本語フォントに、ベクトルフォントを ビットマップデータに変換するVFlibを設定します。 今回は、VFlibが使用するフォントにTrueTypeフォントなどは利用してい ません。利用する場合は、/etc/vfontcapを設定する必要があるそーです。

# cd /usr/local/share/ghostscript/3.33/kanji
# ln -s vflib.ps kconfig.ps
	

gsでのテスト

とりあえず、ここで gs で日本語を含むPoscscriptファイルを 表示してテストしてみます。

% /usr/local/bin/gs /usr/local/share/ghostscript/3.33/kanji/article9.ps
	

dmprtドライバの設定

プリンタドライバ(たぶん....)の設定を、 /usr/local/share/ghostscript/3.33/dmp_site.psファイルに記述 します。

BeginConfig
%%%%%%%%%%%%%%%%%%%%%% Standard user cusomizations %%%%%%%%%%%%%%%%%%%%%
%%% Modified by kabada for PS Print (2000.01.23) %%%
%/printer      (escp_24.src)
/printer	(/usr/local/lib/prtcfg/src/bj_10v48.src)
/margin 	[ 3.675 mm 12.7 mm 0.0 mm 0.0 mm ]
/offset		[ 0.0 mm -4.0 mm ]
%%% END %%%
%               horizontal / vertical
% /resolution   [ 180.0 180.0 ]
%               horizontal / vertical
% /offset       [ 0.0 0.0 ]
%               width / height
% /defaultsize  [ 8.0 in 11.0 in ]
%               width / height
% /maxsize      [ 8.0 -1 ]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
EndConfig
	

フィルタの作成

PSファイルをプリンタ制御コードに変換するフィルタをシェルで 作成します。/usr/local/lib/gsf(755)として作成しています。

#!/bin/sh

/usr/local/bin/gs -q -dNOPAUSE -sDEVICE=dmprt -r360 \
			-sPAPERSIZE=a4 -SOutputFile=- -
exit 0
	

/etc/printcap作成

テキストファイル印刷設定と同様に、/etc/printcapに設定を 追加します。

# PS printer entry
ps|gs|GhostScript printer:\
	:sh:mx#0:lp=/dev/lp1:\
	:if=/usr/local/lib/gsf:\
	:sd=/var/spool/lpd/ps:\
	:lf=/var/spool/lpd/ps/error-log:
	

プリンタ用スプールディレクトリ作成

こちらも、テキストファイル印刷設定と同様に、プリンタデーモン (lpd)が利用するスプール用ディレクトリを作成します。

# mkdir /var/spool/lpd/ps
# chown root.lp /var/spool/lpd/ps
# chmod 755 /var/spool/lpd/ps
	

プリンタデーモンを再起動

/etc/printcapを修正した後は、設定を反映させるために、プリンタ デーモンを再起動します。

# lpc restart all
	

テスト

% lpr -Pps article9.ps
	

あとがき

今回は、フォントやプリンタに関する知識が貧弱で、苦労しました。また、 現在の環境がむちゃくちゃになった可能性もあります:-)いずれは、最新の パッケージで再構築するつもりなので、今回はよしとしてますが......。

まっ、何はともあれ、テキストファイル、Postscriptファイルともちゃんと 印刷できています。NetscapeNavigatorはPS形式でプリンタにデータを渡す ので便利に使ってます。

PC-UNIX Tips

Written by kabada