このプログラムは、小さな文字で印字することによってA4サイズの一枚の紙に 通常の2ページ分のテキスト (96文字×66行×2) を印刷します。つまり、通常、 A4サイズ1ページで出力されるテキストをA5サイズで出力します。 さらに、このプログラムは、バックスペースを使った重ね打ちによる強調文字 やアンダーラインなども表現します。ですから、オンラインマニュアルの印刷に は最適です。
なお、最近のプリンタは解像度が高くなっているので、一枚の紙にもっと多く のテキストを印刷することも可能ですが、このプログラムはそのような限界への チャレンジはしていません。
動作確認ができているのは以下の環境です。
プリンタ: キヤノン 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実際にプリンタに接続して印刷まで動作確認したのは★印のコンピュータです。
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互換機でファイルを直接プリンタに送るプログラム
なお、このプログラムはソースファイルのみの配布ですから、MS-DOS版を使う には、MS-DOSで動くコンパイラが必要です。
キー入力例は、以下のようにあらわしています。
% echo fooここで、行頭の「%」はシェルのプロンプト文字を意味します。 実際にキーボー ドから入力するのは、この「%」よりも右の部分です。 つまり、この例は、キー ボードから「echo foo」と入力して、最後に enterキーを押すことを示していま す。
また、行頭が「%」ではなく、「#」になっているものは、rootに変身してから 行う作業を意味します。そして、
A:\FOO>echo fooのように、行頭が「ドライブ:\ディレクトリ>」になっている例は MS-DOSで行う 作業をあらわします。
なお、例にでてくるファイル名、ディレクトリ名などは、実際のみなさんがイ ンストールする場合とは異なるかもしれません。そのときは、それぞれをみなさ んの環境にあわせて読みかえてください。また、新たにディレクトリを作成する など、例に示した以外の作業が必要になるかもしれません。その場合も、それぞ れみなさんの環境にあわせて作業してください。
まず、$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でマニュアルもぜひインストールしてください。
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 をコンパイラにあわせて変更してください。
C:\FOO>make -f makefile.lsiコンパイルが終ったら、環境変数PATHに登録されているディレクトリにコピーし てください。
C:\FOO>copy slpr.exe c:\fswこれでインストールは完了です。
# 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となります。
A:\>slpr readme.docのようにすると、ファイルが縮小印刷されます。
C:\FOO>slpr readme.doc > slpr.outとすると、縮小印刷のイメージが slpr.out に出力されます。この slpr.out を プリンタにそのまま送れば印刷できます。たとえば、98互換機だと、付録のバッ チファイルを使って、
C:\FOO>rawprint slpr.outとします。それから、汎用版を98互換機で使うときは、フォントファイルのイン ストールをお忘れなく。
参考: rom2fontx - 98互換機のフォントROMを読んで フォントファイルを出力するプログラム