PDF の作り方に関するちょっとしたテクニック

古い情報

日本語論文を PDF にする際の注意点

機種依存文字の問題

 ローマ数字や丸囲み数字などのいわゆる「機種依存文字」は 各方面で忌み嫌われているわけですが, 諸般の事情でこれを使わざるを得ないことがあります. PDF は各種エンコーディングをサポートしているため,機種依存文字も Acrobat Reader を用いれば問題なく表示できるようです. 例えば Windows 上で機種依存文字の入った文書を Acrobat Distiller などで PDF 化すれば,(例えば)Linux 上の Acrobat Reader でも文字化けなしに 読むことができます.

 しかし,TeX の文書を dvips(k) を用いて PS を作り,それを Distiller で PDF に変換する場合は,ふつうだと機種依存文字は(PS を作る段階で) 落ちてしまうようです.これについては以下のような回避手段があるようです.

<参考>


Acrobat Distiller によらない PDF ファイルの作り方

Windows における作成

 Acrobat Distiller を使わずに PDF を作るには, Ghostscript を使用する方法が一般的です.以下のように設定しておくのが便利そうです.

  1. RedMon をインストールする

    PDF を作成するための準備として,RedMon をインストールします. これは,プリンタドライバの出力を任意のプログラムにリダイレクトするためのものです.

  2. 日本語環境用に修正された ghostscript をインストールする

    PDF 作成エンジンとして ghostscript をインストールします. このとき,lib/cidfmap ファイルの最後に,以下の記述を追加します.

    /Ryumin-Light << /FileType /TrueType
    /Path (msmincho.ttc)
    /SubfontID 0 /CSI [(Japan1) 4] >> ;
    
    /GothicBBB-Medium << /FileType /TrueType
    /Path (msgothic.ttc)
    /SubfontID 0 /CSI [(Japan1) 4] >> ;
    

    また,Ryumin-Light および GothicBBB-Medium のエイリアス設定が ある場合はコメントアウトしておきます.

    %/GothicBBB-Medium /MS-Gothic ;
    %/Ryumin-Light /MS-Mincho ;
    

    また,以下の内容のファイルを作って lib/neverembed.ps として保存します.

    %!
    % neverembed.ps
    %
    <</NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique
    /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique
    /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol
    /ZapfDingbats /Ryumin-Light /GothicBBB-Medium /HeiseiMin-W3
    /HeiseiKakuGo-W5 /KochiMin-Dum /KochiGo-Dum /MS-Mincho /MS-Gothic]>> setdistillerparams
    
  3. Adobe PS プリンタドライバをインストールする

    プリンタドライバ経由で EPS を作成するために,Adobe の PS プリンタドライバを インストールします. このとき,プリンタの PPD ファイルが必要となりますが, 日本語フォントとしてモリサワのリュウミンL-KL,中ゴシックBBB を 搭載したカラープリンタの PPD ファイルを使用するのが 都合がよいようです(私は Acrobat Distiller の PPD ファイルを使っています). 逆に,日本語の入ってほしくない PDF ファイルを作りたい場合は, 日本語フォントを持っていないプリンタの PPD ファイルを使用した方が よいかもしれません. なお,接続先ポートは,RedMon によるポート ("Redirected Port") を 新規に作成します.

    なお,Vista 以降では Adobe PS プリンタドライバはインストールできないので,代わりに適当な PS プリンタのドライバをインストールして使います.

  4. インストールしたプリンタの設定をする

    プリンタのプロパティから,PostScript オプションで 出力データの形式を「アーカイブ形式」もしくは 「エラーが軽減するよう最適化」に設定します.

  5. RedMon のポートの設定をする

    作成した RedMon のポート ("RPT1:" など)の設定をして, PS プリンタドライバの出力が ghostscript に引き渡されるようにします. 具体的には,

    Redirect this port to the program: gswin32c.exe
    Arguments for this program are: -sDEVICE=pdfwrite -r600 -dNOPAUSE -dSAFER -sPAPERSIZE=a4 -sOutputFile="%1" -c .setpdfwrite -f neverembed.ps -f -
    Output: Prompt for filename
    Run: Hidden
    

    などと設定するのがよいようです("Prompt for filename" を設定した場合,Vista だと対話型サービス検出サービスを介してメッセージが通知されるのですが,この通知がうまくいかなくなることが私の環境では多々あります. その場合は,Print spooler サービスを再起動すると復旧するようですRedMon 1.9 の登場で問題なくなりました). また,"Run as User" にもチェックを入れておいた方がセキュリティ的に良さそうです.

 以上のようにすれば,アプリケーションから上記プリンタに印刷することによって PDF が作成できるようになります.

<参考>


dvipdfm(x) でサイズの小さい PDF を作る方法

以前は画像の圧縮方法を適切にするための tips が必要でしたが, 最近の Ghostscript では,dvipdfm(x) の設定ファイル (dvipdfm.cfg and/or dvipdfmx.cfg) で,

D "gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dAutoFilterGrayImages=true -dAutoFilterColorImages=true -sOutputFile=%o -c .setpdfwrite -f %i -c quit"

と gswin32c の起動オプションを設定すればよくなったようです.ただし,まだ Distiller ほど圧縮方法の選択は適切でないかもしれません.

<参考>


PDF のページ操作

 複数の PDF ファイルを結合したり, 特定のページを抽出したりしたいことがよくあります. Acrobat があれば可能ですが,フリーソフトで済ませたい, あるいはコマンドラインから操作したい,という場合には pdftk を使うのが良さそうです.

 具体的には,下記のようにすれば OK です. それぞれ,PDF の結合,ページ抽出,ウォーターマーク付加の例です.

# pdftk bar1.pdf bar2.pdf cat output foo.pdf
# pdftk bar.pdf cat 1-3 output foo.pdf
# pdftk bar.pdf background bg.pdf output foo.pdf

 なお,ConTeXt でも同じようなことができます.以下はそれぞれ PDF の結合,ページ抽出,2-up 化の例です (場合によって,オプションを補う必要があるかもしれません).

# texexec --pdfarrange --result=foo.pdf bar1.pdf bar2.pdf
# texexec --pdfselect --selection=1,2,3 --result=foo.pdf bar.pdf
# texexec --pdfcombine --combination=2*1 --paper=a4,landscape --nobanner --result=foo.pdf bar.pdf

ConTeXt は 角藤版 Win32TeX の配布 にも含まれています.なお,PDFjam なるソフトも使えるようです.

<参考>


PDF のメタデータ

PDF にはタイトルや著者,キーワードなどのメタデータを書き込むことができます (pdfmark の DOCINFO). 検索エンジンなどを使う上で,何かと便利です. Acrobat でも自由に書き込むことができるのですが, これをやると PDF のバージョンが強制的に 1.5 (Acrobat 6 Standard の場合)になってしまうようです. これでは不便なことがありますので, 別の方法で書き込むことを考えます.

作成済みの PDF にメタデータを追加する

PDF 作成時点でメタデータを埋め込む (LaTeX 文書の場合)

<参考>


誤り,不備などございましたら御教示下さい(【特定電子メール法に基づく表示】広告メール、迷惑メールの送信はお断りします).
maeda@ynu.ac.jp