いしじまだい / ソフトウェア / 縮小印刷ツール ``slpr'' のページ

縮小印刷ツール slpr 1.01
Copyright (c) 1996 by Dai Ishijima


○ はじめに ○ 動作環境 ○ アーカイブのなかみ ○ このアーカイブ以外に必要なもの ○ 操作例の表記について ○ FreeBSDでのインストール方法 ○ 98互換機/MS-DOS/Turbo C++版のインストール方法 ○ MS-DOS汎用/LSI C版のインストール方法 ○ FreeBSDでの使い方 ○ 98互換機/MS-DOS版の使い方 ○ MS-DOS汎用版の使い方 ○ 参考文献 ○ 謝辞 ○ 登録・改編の記録など ○ おことわり

○ はじめに

インストールガイドやプログラムリストといった各種ドキュメントは、ブラウ ン管や液晶などの画面で見るよりも、紙に印刷してじっくり読んだほうが目が疲 れません。しかし、その一方でプリンタ用紙やインクリボン (あるいはインクカ ートリッジやトナーなど) を消費してしまいます。そこで、紙という目にやさし いメディアに記録するというメリットと、資源を大量に消費してしまうというデ メリットの妥協点として、このプログラムは作成されました。

このプログラムは、小さな文字で印字することによってA4サイズの一枚の紙に 通常の2ページ分のテキスト (96文字×66行×2) を印刷します。つまり、通常、 A4サイズ1ページで出力されるテキストをA5サイズで出力します。 さらに、このプログラムは、バックスペースを使った重ね打ちによる強調文字 やアンダーラインなども表現します。ですから、オンラインマニュアルの印刷に は最適です。

なお、最近のプリンタは解像度が高くなっているので、一枚の紙にもっと多く のテキストを印刷することも可能ですが、このプログラムはそのような限界への チャレンジはしていません。

○ 動作環境

このプログラムは、 ESC/P 24ドットプリンタ (ESC/P 24-J81) およびその互 換プリンタ用のプログラムです。プログラムそのものは、PC-9801互換機とAT互 換機上の FreeBSD、MS-DOSで動作します。

動作確認ができているのは以下の環境です。

	プリンタ: キヤノン BJ-330J + コントロールカード BJV-1000/800
	コンピュータとOS: EPSON PC-386GS改 / FreeBSD(98) 2.0R,
			  EPSON PC-286VG / MS-DOS 3.3C ★,
			  digital HiNote Ultra CS433 / FreeBSD 2.1R ★,
			  HP 200LX / MS-DOS 5.00
			  Sony NEWS-1460 / NEWS-OS 3.3a
	コンパイラ: FreeBSD の cc,
		    Turbo C++ 1.0 2nd Edition,
		    LSI C-86 Ver 3.30 試食版
		    NEWS の gcc-2.3.3
実際にプリンタに接続して印刷まで動作確認したのは★印のコンピュータです。

○ アーカイブのなかみ

アーカイブファイル slpr101.tgz には以下のファイルが含まれています。
	readme.doc	このファイル
	slpr.c		プログラム本体
	slpr.h		slprのヘッダファイル
	slpr.1		slprのオンラインマニュアル
	font.c  	$fontx2互換フォントファイルから
			フォントを読むプログラム
	pb98.c		98互換機のプリンタBIOSを使ってプリンタに
			データを送るプログラム
	pb98.h		pb98のヘッダファイル
	romfont.c	98互換機のROMから文字フォントを読むプログラム
	makefile	FreeBSD用 makefile
	makefile.tcc	98互換機/MS-DOS/Turbo C++用 makefile
	makefile.lsi	MS-DOS汎用/LSI C86試食版用 makefile
	printcap	このプログラムを使うための /etc/printcapのサンプル
	lpf-escp	printcapで指定するプリンタ用フィルタのサンプル
	rawprint.bat	98互換機でファイルを直接プリンタに送るプログラム

○ このアーカイブ以外に必要なもの

このプログラムを98互換機の MS-DOS環境以外で利用するには、$fontx2互換の 16×16ドット DBCS (2バイト文字、いわゆる全角文字) フォントファイルと、16 ×8ドット SBCS (1バイト文字、 いわゆる半角文字) フォントファイルが必要で す。また、このアーカイブに含まれる printcap および lpf-escp を利用するに は、 nkf (ネットワーク漢字コード変換フィルタ) も必要です。あと、jdvi2kps や ghostscript もあったほうがいいでしょう。

なお、このプログラムはソースファイルのみの配布ですから、MS-DOS版を使う には、MS-DOSで動くコンパイラが必要です。

○ 操作例の表記について

次節以降にはインストールおよび使用方法の例がいろいろでてきます。ここで は、その表記について説明します。

キー入力例は、以下のようにあらわしています。

	% echo foo
ここで、行頭の「%」はシェルのプロンプト文字を意味します。 実際にキーボー ドから入力するのは、この「%」よりも右の部分です。 つまり、この例は、キー ボードから「echo foo」と入力して、最後に enterキーを押すことを示していま す。

また、行頭が「%」ではなく、「#」になっているものは、rootに変身してから 行う作業を意味します。そして、

	A:\FOO>echo foo
のように、行頭が「ドライブ:\ディレクトリ>」になっている例は MS-DOSで行う 作業をあらわします。

なお、例にでてくるファイル名、ディレクトリ名などは、実際のみなさんがイ ンストールする場合とは異なるかもしれません。そのときは、それぞれをみなさ んの環境にあわせて読みかえてください。また、新たにディレクトリを作成する など、例に示した以外の作業が必要になるかもしれません。その場合も、それぞ れみなさんの環境にあわせて作業してください。

○ FreeBSDでのインストール方法

ここでは、/tmp においた アーカイブファイル slpr101.tgz を展開し、実行ファイルを /usr/local/bin に、 フォントファイルを /usr/local/lib/fontx にインストールする場合を 例にして説明します。

まず、$fontx2互換フォントファイルを調達し、 インストール先に格納します。 たとえば、jpnzn16x.fnt と jpnhn16x.fnt というフォントを手に入れたのなら、

	# mkdir /usr/local/lib/fontx
	# cp jpnzn16x.fnt jpnhn16x.fnt /usr/local/lib/fontx
のようにします。

もし、インストール対象が AT互換機であり、すでに MS-DOSファイルシステム に $fontx2形式のフォントがあって、FreeBSD からそのフォントファイルを参照 できるなら、この作業は不要です。 その場合は、slpr がそのファイルを参照で きるようにmakefile を編集してください。

次に、作業用ディレクトリを作成し、そこでアーカイブを展開します。

	% cd /tmp
	% mkdir slpr
	% cd slpr
	% tar xzvf /tmp/slpr101.tgz
そして makefile の設定をあなたの環境にあわせて編集してからコンパイルしま す。
	% vi makefile
	% make
コンパイルできたらインストール先にコピーします。もし、インストール先ディ レクトリが存在しないときは、事前に作成しておいてください。
	# make install
もし、jgroffなどがインストールされていて、日本語オンラインマニュアルを参 照できるなら、
	# make install.man
でマニュアルもぜひインストールしてください。

○ 98互換機/MS-DOS/Turbo C++版のインストール方法

まず、 作業ディレクトリ (この例では C:\FOO) にアーカイブを展開してくだ さい。アーカイブの展開には DOSで動く tar を使うか、FreeBSD上で展開してか らDOSにコピーするという方法が使えます。 このとき、行末コードや漢字コード も変換してください。そのあと、
	C:\FOO>make -fmakefile.tcc
でコンパイルします。コンパイルが終ったら、環境変数PATHに登録されているデ ィレクトリにコピーしてください。
	C:\FOO>copy slpr.exe c:\fsw
なお、Borland C++ 2.0 など、Turbo C++ 1.0 2nd Edition 以外のコンパイラを 使う場合は、makefile.tcc をコンパイラにあわせて変更してください。

○ MS-DOS汎用/LSI C版のインストール方法

98互換機版と同様に、まず作業ディレクトリにファイルを展開します。そして 環境にあわせて makefile.lsi を編集した後、makeでコンパイルします。
	C:\FOO>make -f makefile.lsi
コンパイルが終ったら、環境変数PATHに登録されているディレクトリにコピーし てください。
	C:\FOO>copy slpr.exe c:\fsw
これでインストールは完了です。

○ FreeBSDでの使い方

印刷したいファイルを slpr に喰わせて、出力をプリンタに送ってください。 たとえば、プリンタが /dev/lpt0 に接続されているなら次のようにします。
	# slpr readme.doc > /dev/lpt0
しかし、これではあまりにも直接的ですから、 このプログラムを lpr から使 えるように、 付録の printcap, lpf-escp を参考にして /etc/printcap を設定 してください。付録の設定をそのまま使う場合は、
	# cp /etc/printcap /etc/printcap.ORG
	# cp printcap /etc/printcap
	# cp lpf-escp /usr/local/libexec/lpf-escp
	# cd /usr/local/libexec
	# chmod +x lpf-escp
	# ./lpf-escp
のようにしてインストールしてください。

上記の方法で printcap, lpf-escp をインストールした場合は、オプションな しの lprで普通のテキストファイルを、-c でPostScriptファイルを、-d で dvi ファイルを印刷することができます (もちろん、PostScript, dvi ファイルを印 刷するためには、ghostscript と jdvi2kps が適切にインストールされている必 要があります)。 そして -t オプションでテキストファイルの縮小印刷ができま す。たとえば、このファイルを縮小印刷するなら、

	% lpr -t readme.doc
とします。

最後に、上記の printcapの設定をまとめておくと、

	lprのオプション 印刷するファイル種別	 例
	---------------+------------------------+-------------------
	なし		テキストファイル	 lpr file.txt
	-c		PostScript		 lpr -c tiger.ps
	-d		dvi			 lpr -d test_a4.dvi
	-t		テキストファイル (縮小)  man man | lpr -t
となります。

○ 98互換機/MS-DOS版の使い方

コマンドラインから
	A:\>slpr readme.doc
のようにすると、ファイルが縮小印刷されます。

○ MS-DOS汎用版の使い方

コマンドラインから
	C:\FOO>slpr readme.doc > slpr.out
とすると、縮小印刷のイメージが slpr.out に出力されます。この slpr.out を プリンタにそのまま送れば印刷できます。たとえば、98互換機だと、付録のバッ チファイルを使って、
	C:\FOO>rawprint slpr.out
とします。それから、汎用版を98互換機で使うときは、フォントファイルのイン ストールをお忘れなく。

参考: rom2fontx - 98互換機のフォントROMを読んで フォントファイルを出力するプログラム

○ 参考文献

○ 謝辞

slpr 1.00 のバグだけでなく、原因・対策をレポートしてくださった、 松茸さんに感謝します。

○ 登録・改編の記録など

96/02/22: バージョン 1.00 を NIFTY-Serve FEPSONX LIB(5) に登録。
今回: 各ページの最初に印字される行にゴミが出る、 バージョン 1.00 のバグを修正し、バージョン 1.01 として登録。

○ おことわり