FreeBSDでプリンタを使用するためには、プリントキャップファイルを
正しく修正する必要があります。
BJ−10Vから、漢字などの全角文字を印刷するためにはプリンタの
エスケープシーケンスにコードを変換するフィルタを用意する必要があります。
PM−700CはWindows専用のGDIプリンタのため、漢字フォントを
搭載していないらしく、漢字を印刷することができません。
(いわゆる半角英数字は、文字コードを送ることで印刷できるようです。)
PM−700Cから漢字を含む文字列を印刷するためには、ghostscriptの
力を借りる必要があります。(mjc720のドライバを流用しているので、黒+3色の
印刷になります)
/etc/printcapの設定サンプルです。ifに指定してあるのは、漢字を印字するための フィルタです。
# @(#)printcap 5.3 (Berkeley) 6/30/90 #lp|local line printer:\ # :lp=/dev/lp:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: lp|local line printer:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:sh:\ :if=/usr/local/bin/euctoprt:pw=#80:
印刷したいデータの漢字コードをJISコードに変換し、プリンタのエスケープ
シーケンスを付加するシェルスクリプトを使用しています。
文字コードをJISコードに変換するためには、フリーソフトのnkf ver.1.5を
利用しています。また、JISコードのデータにプリンターのエスケープシーケンスを
付加するためには、C言語で書いたプログラムを自作しました。
#! /bin/csh -f /usr/local/bin/nkf -j | /usr/local/bin/prtout
shostscriptをpackagesからインストールします。 使用するのは、jp-vflib-2.22 と jp-vfghostscript-2.6.2 です。 テキストファイルも印刷する場合は、a2ps-j と nkf もインストールしておきましょう。
/etc/printcap に追加する設定サンプルです。
プリンタ名 pm700c は、Windows95などから、Windows上のプリンタドライバ経由で
印刷するための設定(送られて来た印刷データを加工しない設定)です。
プリンタ名 gs は、ghostscript を使用して、ポストスクリプトをPM700Cの印刷データに
変換して印刷するための設定です。 ifに、ポストスクリプトを非ポストスクリプト
プリンタから印刷するために ghostscript を呼び出すための
スクリプトを指定しています。
プリンタ名 gs-A4 は、PostScriptファイルをA4サイズの用紙に出力する場合に
使用します。プリンタ名gsでは印刷位置がずれてしまう時などに利用すると良いで
しょう。
プリンタ名 gs-A4-text は、テキストファイルをA4サイズの用紙に出力する場合に
使用します。(自動的に2up処理され、ファイル名や時刻、ページ番号が付加されて
印刷されます。)
なお、スプールディレクトリ(/var/spool/output/pm700c, /var/spool/output/gs,
/var/spool/outpu/gs-A4, /var/spool/output/gs-A4-text)を作のを忘れないで
ください。(プリンタ間でスプールディレクトリは共用できません。)
# @(#)printcap 5.3 (Berkeley) 6/30/90 pm700c|GDI printer:\ :lp=/dev/lpt0:sd=/var/spool/output/pm700c:sh:mx#0:lf=/var/log/lpd-errs: gs|gs720|pm700c-gs|GhostScript Printer(720dpi):\ :sd=/var/spool/output/gs:\ :tc=gs-A4: gs-A4|gs720|pm700c-gs-text|GhostScript Printer(A4 720dpi):\ :lp=/dev/lpt0:\ :sd=/var/spool/output/gs-A4:\ :sh:sf:\ :mx#0:\ :if=/usr/local/bin/gsfilt-A4.sh:\ :lf=/var/log/lpd-errs: gs-A4-text|gs720|pm700c-gs-text|GhostScript Printer(A$ text 720dpi):\ :lp=/dev/lpt0:\ :sd=/var/spool/output/gs-A4-text:\ :sh:sf:\ :mx#0:\ :if=/usr/local/bin/gsfilt-A4-text.sh:\ :lf=/var/log/lpd-errs:
# mkdir /var/spool/output/pm700c /var/spool/output/gs # mkdir /var/spool/output/gs-A4 /var/spool/output/gs-A4-text # chmod 775 /var/spool/output/pm700c /var/spool/output/gs # chmod 775 /var/spool/output/gs-A4 /var/spool/output/gs-A4-text
/etc/printcap に記述した、ghostscrit起動用フィルタスクリプトです。
それぞれのファイルを /usr/local/bin/ に置いて、実行可能なように
パーミッションを755あたりにしてください。
#!/bin/sh # ## 1枚分のビットイメージのテンポラリファイルが生成されます。 ## ディスク容量の空きスペースの関係で、テンポラリーファイルの作成場所を ## 変更するときは、以下の2行のコメントをはずしてください。 ##(デフォルトは /tmp の下に作られるらしいです) #TEMP=/var/tmp #export TEMP # ## ghostscript の引数は、使用するプリンタにあわせて変更してください。 ## フィルタとして使用する場合は、"-q","-dNOPAUSE","-sOutputFile=-" は、 ## (プリントデータにメッセージが混じらないようにするため)必要でしょう。 /bin/cat | /usr/local/bin/gs -q -sDEVICE=mjc720 -dMicroWeave=1 -dDirection=1 -dD otSize=0 -dNOPAUSE -sOutputFile=- - 2>/dev/null
#!/bin/sh # ## 1枚分のビットイメージのテンポラリファイルが生成されます。 ## ディスク容量の空きスペースの関係で、テンポラリーファイルの作成場所を ## 変更するときは、以下の2行のコメントをはずしてください。 ##(デフォルトは /tmp の下に作られるらしいです) #TEMP=/var/tmp #export TEMP # ## ghostscript の引数は、使用するプリンタにあわせて変更してください。 ## フィルタとして使用する場合は、"-q","-dNOPAUSE","-sOutputFile=-" は、 ## (プリントデータにメッセージが混じらないようにするため)必要でしょう。 /bin/cat | /usr/local/bin/gs -q -sDEVICE=mjc720 -dMicroWeave=1 -dDirection=1 -dD otSize=0 -dNOPAUSE -sPAPERSIZE=a4 -sOutputFile=- - 2>/dev/null
#!/bin/sh # ## 1枚分のビットイメージのテンポラリファイルが生成されます。 ## ディスク容量の空きスペースの関係で、テンポラリーファイルの作成場所を ## 変更するときは、以下の2行のコメントをはずしてください。 ##(デフォルトは /tmp の下に作られるらしいです) #TEMP=/var/tmp #export TEMP # ## ghostscript の引数は、使用するプリンタにあわせて変更してください。 ## フィルタとして使用する場合は、"-q","-dNOPAUSE","-sOutputFile=-" は、 ## (プリントデータにメッセージが混じらないようにするため)必要でしょう。 /bin/cat | /usr/local/bin/nkf | /usr/local/bin/a2ps-j | /usr/local/bin/gs -q -sDEVICE=mjc720 -dMicroWeave=1 -dDirection=1 -dD otSize=0 -dNOPAUSE -sPAPERSIZE=a4 -sOutputFile=- - 2>/dev/null