PrintToLRF

ホーム > 平井和正 > LIBRIé > 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 に従って各ソフトのインストールと設定を行う。

  • 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
    1. うまく設定できていれば、次のように表示される。
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日修正