####################################################
#  ESC/P,Page lpr filter                           #
#      escpf,escpagef Version 0.4         '98,5,5  #
####################################################

1.これは何か?
  ESC/P,Page プリンタ制御コード用のlprフィルターです。 ほとんどの
UN*X 系 OS で使えると思いますが、多少のソース修正は必要かもしれま
せん。Linux/FreeBSD 等で実績があります。

2.何ができるか?
  EUC と JIS のテキストファイルを自動認識して印字します。
  escpagef では ANKと漢字を、1:2 の比率になるように調整しています。
escpf では、なるべく 1:2 の比率になるように調整しています。
  また、0.4alpha より ESC/PS(ESC/PSuper) に対応するコードを組み込
んでみました。なお、この機能は LP-1700/8000 での動作が確認されてい
ます。

3.何ができないか?
  2.に書いていないことはできません。 ラスター形式の印字もできませ
んし、1,3byte カナ(いわゆる半角カナ)も印字できません。

4.どうやって使うか?

4.1 インストール

1. Makefile の編集
  Makefile 中の BINDIR を OS にあわせて設定して下さい。また、
LINES COLUMNS TOP_MERGIN LEFT_MERGIN も必要に応じて設定して下さい。
  -DLARGE_FONT を適当なところで定義すると、一回り大きなフォントに
なります。

2. make

  % make
  % make install

で OK です。BINDIR 以下に、escpf,escpagef,escpsf,escpagesf が置か 
れます。これらは、それぞれ次のプリンタに使用します。

  escpf
    => ESC/P モードのみを持つプリンタ用です。(ex. BJ10)

    ESC/P の制御コードを持つプリンタ(例 Canon BJシリーズ)用フィル
    タ。 ただし、ESC/PSuper のモードも持つプリンタでは、escpsf を
    使うか、手動で ESC/P モードに切り替えておきます。

  escpagef
    => ESC/Page モードのみを持つプリンタ用です。

    ESC/Page の制御コードを持つプリンタ(例 EPSON LPシリーズ)用フィ
    ルタ。ただし、ESC/PSuper のモードも持つプリンタでは、escpagesf 
    を使うか、手動で ESC/Page モードに切り替えておきます。

  escpsf
    => ESC/PS モードを持つインクジェット/ラインプリンタ用です。
						       (ex.MJ800c)
    escpf の ESC/PSuper モード対応版です。ただし未テストに近い状
    態です。EPSON の MJ500c/510c/800c/810c/900/910 等の動作レポー
    トをお願いします。
         === 必ずプリンタを ESC/PS モードにしてください ===

  escpagesf
    => ESC/PS モードを持つページプリンタ用です。(ex.LP1700)

    escpagef の ESC/Psuper モード対応版です。EPSON LP シリーズで使
    用します。LP1700/8000 でテスト済です。
         === 必ずプリンタを ESC/PS モードにしてください ===

4.2 printcapの設定
  /etc/printcap に、以下を追加してください。適当に書いてあるので、
御好きなように書き直して下さい。 また、必要なディレクトリが存在す
ることも確認しておいて下さい。 pl で行数の設定、pw で桁数の設定が
出来ます。 A4 で、どれだけ印字できるかは、 まだテストしていません
^^;
  また、/var/spool/lpr/lp は mkdir しておいて下さい。

	# ---- ここから ----
	lp|escpage| esc/page printer filter:\
	        :lp=/dev/lp1:sh:\
	        :if=/usr/sbin/escpagef:\
	        :of=/usr/sbin/escpagef:\
	        :sd=/var/spool/lpr/lp:\
		:pw#80:pl#66:\
	        :lf=/var/spool/lpr/lpd-errs:
	# ---- ここまでを /etc/printcap に書いてね ----

	* この例は、escpagef の場合です。その他のフィルタを使いた
	  い場合は、escpagef を置き換えて下さい。

4.3 印字
  試験の前に、プリンタのモードを確認して下さい。
  まず、 ps コマンドで /usr/sbin/lpd が起動されていることを確認し
ます。起動されていなければ、root になって、(取り合えず)コマンドラ
インから起動して下さい。 また、/etc/rc.d/rc.inet2(slackwareの場合)
で起動するようにしておくと便利です。
  lpd の確認が出来たら、プリンタをリセットします。 コマンドライン
から lpc を実行すると、lpc> のプロンプトがでます。そこから

    lpc> restart all

と入力します。

これで完成です。試しに EUC や JIS 混じりのテキストを印字して見ま
しょう(サンプルで、EUCCODEとJISCODEのファイルを入れておきました)。
印字方法は、

	% lpr -Plp ファイル名

  とやります。`-Plp' は lpr のデフォルトオプションになっています
ので、省略も出来ます(-Pescpf 等の場合は省略できません)。
  応用として、pr を併用した場合を上げておきます。 pr については 
man で確認して下さい。

     pr ファイル名 | lpr -Plp

	  66 行ごとにヘッダを入れて印字します。通常のドキュメント 
	の印字等に使用します。

     pr -n ファイル名 | lpr -Plp

	  66 行ごとにヘッダを入れて印字します。また、行番号も付加 
	します。ソースリストの印字などに使用します。

	(注)66 行は、ヘッダーと下部の余白を含むので、十質的に 56 
	    行印字されます。 

    pr -2 -w40 ファイル名 | lpr -Plp

	  段組出力です。-2 を -3 にすれば、組み数を 3 に出来ます。

5.ライセンス
  escpf に収録されたソフトウェアは、基本的にフリーソフトウェアで
あり、はねひでやの著作物です。しかし、作者はどのような責任も負わ
ないものとします。配布に関しては、実費程度であれば自由に行って構
いません。雑誌/書籍付録の CD-ROM や、フリーソフトウェア集の 
CD-ROM への収録も問題ありません。ただし、ソースコードも必ず同時
に収録/配布してしてください。質問については気が向けば回答するか
も知れません。ただし、オフィス内での利用に関する質問に関しては、
有償サポートへの申込とみなします。有償サポートは『仕様内』でのサ
ポートに限定し、費用についてはご相談に応じます:-) (つまり、はね
の手間をわずらわせない限り、誰でも自由に使うことが出来ます。)
  なお、もらった試しはありませんが、LP-1700 のトナー、感光ドラム、
PPC 用紙、現金等のドネーションは大歓迎致します;-p

6.謝辞
  ドキュメントを英訳して頂いた三田@東大さん、ならびにテスターのみ
なさん、ありがとうございました。

--------
はね ひでや	wing@linux.or.jp

