PrintToLRF
- Sony LIBRIe EBR-1000EP で読むことができる電子ブックをつくってみました。
- 今回作成したのは、LIBRIe でよめる「BBeB規格 Bookフォーマットのe-Book」のうち、暗号化されていない .lrf の拡張子をもつファイルです。
- 使用したソフトは「PrintToLRF v0.1」です。このソフトは電子ブックを出力する仮想的なプリンタで、いろいろなソフトからの印刷イメージ出力をlrfファイルにすることができます。
(SONYの「Printer for LIBRIe」のUNIX版です)
- Linux (Fedora Core 1) でテストしました。
準備
- PrintToLRF
http://printtolrf.peterknowles.com/から PrintToLRF v0.1 をダウンロードして展開すると、以下のファイルが出てくる。
- README
- printtolrf
この README に従って各ソフトのインストールと設定を行う。
- CUPS
CUPS (Common UNIX Printing System) は、Fedora Core 1 インストール時に導入済。
新たにインストールする場合は、適当なサイトからRPMパッケージを取ってくるか、http://www.cups.org/からダウンロード。
- Python 2.3 以降
プログラム言語の一種で、Fedora Core 1 に標準で入っているPython はバージョンが古かったため、最新版をインストール。
日本Pythonユーザ会を参照して、Python 2.4のRPMソースパッケージをダウンロードし、コンパイル。
- makelrf 0.3
makelrfの内容については、「makelrf」 を参照。
http://www.sven.de/librie_files/から makelrf3.zip をダウンロードして展開し、sources ディレクトリにあるソースファイルから実行ファイルを作成する。
makefile はついていないので、次のようにコンパイル。
$ gcc -O2 -lz book.c makelrf.c -o makelrf
できあがった makelrf は /opt/makelrf/bin/ にコピー。
$ mkdir /opt/makelrf
$ mkdir /opt/makelrf/bin
$ cp makelrf /opt/makelrf/bin
また、メタ情報ファイル info.xml を /opt/makelrf/share/ にコピー
$ mkdir /opt/makelrf/share
$ cp info.xml /opt/makelrf/share
- Netpbm
グラフィックデータのフォーマット変換やフィルタ処理を行うツール。
http://netpbm.sourceforge.net/を参照し、netpbm の RPMパッケージを取ってきてインストール。
- GhostScript
GhostScriptは、Fedora Core 1 インストール時に導入済。
設定
以下の作業はrootで行う。
1. printtolrfのファイルをCUPSのバックエンド設定ディレクトリ(通常は /usr/lib/cups/backend )にコピーし、パーミッションをrootに変更。
# cp printtolrf /usr/lib/cups/backend
# chown root.root /usr/lib/cups/backend/printtolrf
# chmod 755 /usr/lib/cups/backend/printtolrf
2. CUPSのデーモンを再起動。
# /etc/init.d/cups restart
3. lpinfo で printtolrf がうまく設定できているか確認。
# lpinfo -v
- うまく設定できていれば、次のように表示される。
direct printtolrf
4. PrintToLRF の設定を行う。
必要に応じて /usr/lib/cups/backend/printtolrf をエディタで編集。
設定名: MAKELRF
説 明: makelrf プログラムの絶対パス
初期値: /opt/makelrf/bin/makelrf
設定名: XMLINFO
説 明: makelrfで使われるメタ情報ファイル info.xmlの絶対パス
初期値: /opt/makelrf/share/info.xml
設定名: GS
説 明: GhostScript の実行ファイル gs の絶対パス
初期値: /usr/bin/gs
設定名: PSSELECT
説 明: psファイルを分割するためのコマンド psselect の絶対パス(実は不要?)
初期値: /usr/bin/psselect
設定名: OUTPUTDIR
説 明: 作成された電子ブックの LRFファイルを出力するディレクトリ
初期値: /tmp
設定名: TWOPAGE
説 明: ページを2つに分割するか否かの設定。このオプションを使うと、
LIBRIeを横にして読む必要があるが、このほうが読みやすい
初期値: 1(2つに分割する)
設定名: DEFAUTHOR
説 明: 電子ブックの著者名 (ブックリストで表示される)
初期値: PrintToLRF
設定名: DEFDESCRIPTION
説 明: 電子ブックの注記
初期値: Generated by PrintToLRF v0.1
設定名: NETPBMDIR
説 明: NETPBMの一連のファイルがインストールされたディレクトリ
初期値: /usr/bin
5. CUPSのプリンタ設定を行う。CUPSは、Web画面から設定を行う。
- ブラウザを立ち上げ、ポート番号631のCUPS設定画面を表示
http://localhost:631
- "Manage Printers" をクリック
- "Add Printer" をクリック
- ユーザ名 "root" と、rootのパスワードを入力
- Add New Printer に以下の項目を入力
- "Continue" をクリック
- "Device" の中から "LRF File Creator" を選択して、"Continue" をクリック
- "Device URI" に "printtolrf://" と入力し、"Continue" をクリック
- "Make" の中から "Generic" もしくは "Postscript" を選択し、"Continue" をクリック
- "Model" の中から "Generic PostScript Printer ..." を選択し、"Continue" をクリック
- 以上でプリンタ名 "LRFPrinter" が追加されるので、上部にあるツールバーの "Printers" をクリックして確認
手順
適当なアプリケーションを立ち上げ、プリントを行う。
たとえば、WWWブラウザで適当なサイトにアクセスし、「印刷」を行う。
このときプリンタとして、先に設定した "LRFPrinter" を選択して印刷すると、「設定名: OUTPUTDIR」で設定したディレクトリに電子ブックが出力される。
出力された電子ブックのファイル名の形式は次のとおり。
<uniquename>.<CUPS Job ID>.<Username>.lrf
補足
今回インストールした PrintToLRF は python のスクリプトファイル。
このスクリプトファイルによる電子ブック作成の流れは、だいたい次のとおり。
- CUPSから受け取ったデータは、GhostScriptでPostScriptファイルに変換される
- netpbmで、PostScriptファイルを中間形式の .ppm に変換してから、gifファイルを出力
- 先頭ページからサムネール用の gifファイルを作成
- makelrfで、すべてのgifファイルをまとめて、電子ブックファイルを出力
その後、2005.4に PrintToLRF v0.2 がリリースされましたが、インストールの手順は v0.1 と同じでよさそうです。
2009年6月25日作成/2016年11月1日修正