おかげさまで、本連載も今年最後の更新となりました。前身の「OS X ハッキング!」をあわせれば、来年でなんと13年目に突入です。思えば遠くへ来たもんだ……というわけで、引き続きご愛顧のほどよろしくお願いします。

さて、今回は「印刷物の表紙」について。必要なページだけ印刷すれば用は足りる、表紙など必要ないと言われてしまうかもしれないが、それはOS Xに用意されている表紙デザインがあまりにも貧弱だからかも。自分好みにカスタマイズした表紙を用意できるとあれば、その考えも変わるはずだ。

CUPSと表紙の関係

OS Xの印刷機構には、Jaguar(v10.2)以来「CUPS(Common UNIX Printing System)」が採用されている。LPR(Line Printer Daemon protocol)など、UNIX系OSでは多くの採用実績を持つ印刷システムとの互換性を確保しつつ、TCP/IPネットワーク経由で印刷データの送受信やプリンタ制御を実現するIPP(Internet Printing Protocol)、Webブラウザを利用した遠隔管理など、モダンな機能を提供している。オープンソースソフトウェアではあるが、2007年にAppleが開発元企業を買収して以降は、OS Xのバージョンアップに歩調をあわせ更新されている。

CUPS環境下では、プリンタードライバはCUPSの「フィルタ」として実装される。プリンタメーカーが開発したドライバは、/Library/Printersディレクトリー以下へインストールされ、必要に応じてCUPSから呼び出されるしくみだ。ドライバ(フィルタ)はCUPSの機能と明確に分離されているため、プリンターが直接解釈可能なデータ(ページ記述言語)に変換する処理は、CUPSとは直接関係がない。

しかし、CUPS自体に用意されているコンテンツもある。「プリンタのテストページ」はそのひとつで、プリンタへの機種依存はない。印刷物に添える形でプリントアウトされる「表紙」も、CUPSのリソースとして用意されている。どの表紙を選んでもCUPSロゴが中央に印刷されているのは、それが理由だ。

それにしても、この「表紙」、あまりに飾り気がない。どれを選んでもヘッダ/フッタに印刷される文字列は同一で、中央付近にはCUPSロゴが挿入される。これでは、印刷したくなくなるのも無理はない。

印刷ダイアログで「表紙」を選ぶと、表紙のタイプを指定することができる

表紙のタイプに「機密」を指定したところ、このような印刷物が……表紙としては簡素すぎる

オリジナルの表紙をつくろう

その「表紙」だが、オリジナルのものに差し替えることができる。仕様は/usr/share/doc/cups/helpディレクトリにある「spec-banner.html」に記述されたとおりで、/usr/share/cups/bannersディレクトリへコピーすればOKだ。ただし、日本語環境のプリントダイアログから選べる表紙の種類は6種類に決め打ちされているため、「標準(standard)」や「機密(secret)」など、それぞれ対応するファイル名として保存するしかない。

ここでは、「機密」という表紙を例に、ヘッダを「マル秘事項」、フッタを「読後破棄」、画像を朱書きした「マル秘」に変えてみよう。まずは「テキストエディット」を起動し、オリジナル(リスト1)を参考に改変版(リスト2)を入力する。ヘッダ/フッタには、ひらがなや漢字を使用することもできる。完成後は、文字エンコーディング形式に「UTF-8」を指定したうえで、デスクトップに「secret.txt」として保存すること。

「マル秘」の画像ファイルは、適当なグラフィックソフトでデザインし、8bitカラーのPNGとして保存すればOK。ファイル名は適当で構わないが、CUPSの不具合か大文字から始まるものは認識されなかったため、すべて英小文字(例:maruhi.png)で命名すること。

CUPSロゴの代わりに使う「マル秘」ロゴ。8bitカラーのPNGとして保存する。ファイル名はすべて英小文字にすること

リスト1:/usr/share/cups/banners/secret (オリジナル)

#CUPS-BANNER
Show job-id job-name job-originating-user-name job-originating-host-name job-billing
Header Secret
Footer Secret
Image images/cups.png

リスト2:/usr/share/cups/banners/secret (改変版)

#CUPS-BANNER
Show job-id job-name job-originating-user-name job-originating-host-name job-billing
Header マル秘事項
Footer 読後破棄
Image images/maruhi.png

リスト2の内容を保存するとき、テキストエンコーディングには「Unicode(UTF-8)」を指定すること

これで準備はひとまず完了。あとはTerminalを起動し、以下のコマンドラインを順に実行すればOKだ。その後、ふだんどおりプリントダイアログを表示し、表紙に「機密」を指定したうえで印刷を実行してみよう。これまでよりはだいぶマシな表紙がプリントアウトされるはずだ。

$ cd /usr/share/cups/banners
$ sudo mv secret secret.orig   ←オリジナルの「secret」を保存
$ sudo cp ~/Desktop/secret.txt secret   ←自作の「secret」をコピー
$ sudo cp ~/Desktop/maruhi.png /usr/share/doc/cups/image/  ←自作の画像を所定のディレクトリへコピー

このように、カスタマイズした表紙が印刷された。カラープリンタで印刷すれば、朱書きの「マル秘」はインパクト大だ