Ubuntu 9.04の印刷機能でPDFを作成する際に注意すること

GTK+を使用したアプリ(geditやFirefoxなど)では.txtファイルや.htmlファイルを.pdfファイルに出力することができるが、主にHTMLファイルをFirefoxでPDFに変換する際に上手くいかないことが多々あったので、その際に取った解決策等を以下にメモっておく。

  1. 用紙サイズを変更する
    geditやFirefoxSeaMonkeyでは印刷プレビューのページ設定などから用紙サイズを変更できる。デフォルトではUS レターになっているので場合に応じてB5やA3などに変更する。

  2. CJK部首補助を含むフォントを使用しない(メイリオヒラギノなど?)
    印刷機能でテキストファイルなどをPDF化するとフォントが埋め込まれたPDFが生成されるが、埋め込むフォントにCJK部首補助が含まれている場合、一部の文字がCJK部首補助に変換される(例えばU+9B3CがU+2EE4になっちゃったりとか)。見た目は変わらないので読む分には問題ないが、Google デスクトップやHyper Estraierの検索結果に引っかからなくなるので、埋め込むフォントにはIPAモナーフォントなどのCJK部首補助を含まないと思われるフォントを使用する。

  3. FirefoxでHTMLを印刷する場合はfont-weightをnormalにする
    大抵の日本語フリーフォントにはボールドフォントが含まれていないので、ソフトウェアが擬似的に太字に見せているが、PDFにはそのような概念が無いらしく、例えばboldなテキストを含むHTMLをIPAフォントを埋め込んでPDF化しAdobe Readerで表示すると、文字の太さは普通になっている(メイリオなどボールドな書体を含むフォントを埋め込めば当然太字で表示される)。

    太字にならないだけなら特に問題は無いが、太字部分にボールドな書体を含まないフォントを使用した場合、文字と文字の間に (半角スペース)が挿入されてGoogle デスクトップで検索に引っかからなくなる場合があるので、PDF化する前にCSSの<b>タグや<strong>タグ、<h1>タグなどを削除するか、font-weightをnormalにしておく。

    ※2011年2月6日追記。太字が用意されているMigMixフォントを使用する事で、一応この問題は解決する。

  4. FirefoxでHTMLを印刷する場合は複雑なCSS(特にfloatプロパティとoverflowプロパティ)を使用しない
    floatとoverflowがcssに含まれている状態で印刷した場合、ページが途切れて正常に印刷できないことがあるので注意。

    ※2011年2月6日追記。Firefox 4.0 beta 11の時点ではかなり改善されている。

関連:Ubuntuで使えるフリーフォント『MigMix』