http://rubikitch.com/に移転しました このページをアンテナに追加 RSSフィード

2010-10-28

[][]印刷枚数を最高1/16に圧縮するエコノミー印刷コマンド&u2psパッチ

問題点

印刷すると、PCがなくても文章を読めるので便利ですね。 ただ、困るのが長い文書は紙がかさばることです。 この問題は1枚の紙に複数ページをまとめて印刷することで解決できます。

mpageコマンドは、複数ページのテキストファイルPostScriptファイルをまとめて印刷します。 しかし、そのまま実行しては1ページの文書を4分割で印刷するなど、ページ数にあわない挙動をします。 そこで、PostScriptファイルテキストファイルもu2psコマンドPostScriptに変換する)のページ数から、適切な分割をしてくれるようなスクリプトを書きました。

このスクリプトは、5ページ以上の文書は8分割して印刷します。 8分割を両面印刷することで、紙の使用量を1/16にまで落とすことができます。 80ページの文書が5枚におさまるのです。 さらに、文字が小さいと、左右への視線の移動がなくなるので速読しやすいというメリットもあります。

さっそくレーザープリンタを買った ので、レバレッジメモ をこのコマンド印刷して持ち歩いています。 レバレッジメモを常に持ち歩くためには、かさばると困るのです。 また、大量の文書を少ない枚数の紙で持ち運べるので、PDAを使うことがなくなりました。

仕様

とりあえず、最低限のlprコマンドの置き換えができるような作りにしました。

短いので、必要ならば適当に拡張してください。

必要なもの

  • CUPS
  • gv
  • pdf2ps
  • u2ps (gnome-u2ps)
  • mpage
  • Ruby (1.8, 1.9両対応)

コード

以下からダウンロードし、lprという名前でホームディレクトリに保存します。 もちろん実行可能にしておきます。

no title

使い方

$ echo stdin | lpr
$ lpr foo.txt
$ lpr -J DocumentTitle foo.txt
$ lpr foo.jpg
$ lpr foo.pdf
$ lpr foo.ps

Emacsでも使える

lprコマンドの置き換えなので、Emacsの中でもそのままM-x print-bufferやM-x print-regionで印刷できます。

u2psのパッチ

途中で改行をしないようにするパッチ

UTF-8環境Unix日本語印刷するには、u2psコマンドを使います。 しかし、u2psは半角と全角の間のおかしな位置で改行を入れてきます。 これを修正するパッチです。

no title

<2010-10-30 土>更新 オフセットをそろえるパッチ

さらに、ページごとにxオフセットが異なるのでそろえるパッチです。これでソースコードを読むのが楽になります。

no title

トラックバック - http://d.hatena.ne.jp/rubikitch/20101028/lpr