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

古い情報

図表用 PDF ファイルの作り方

Windows アプリケーションからの作成

 TeX で画像を貼り込む場合,PDF ファイルを利用することができます. 直接 PDF ファイルを書き出すことができない Windows のアプリケーション (Excel, PowerPoint など)から PDF を作成するためには,PostScript プリンタドライバを使う手があります. 印刷機能を利用して EPS を出力して PDF に変換してしまおうというわけで,以下のような手順で自動化しておくと便利です.なお,ここでは Windows 10 を想定していますが,他の Windows でも手順は同様です.W32TeXTeX Live および Ghostscript がすでにインストールされ,PATH が通っていることを前提とします.

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

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

  2. ps2epsepstopdf を使用可能にする

    EPS の BoundingBox を自動設定するソフト, ps2eps および EPS を PDF に変換する epstopdf を使用可能にします. ps2eps および epstopdf 自体は W32TeX や TeX Live に含まれていますが,元々が Perl スクリプトなので,Strawberry Perl などの Perl 処理系をインストールしておきます(※TeX Live には tlperl が入っている).

  3. PS プリンタをインストールする

    プリンタドライバ経由で EPS を作成するために,PostScript プリンタをインストールします.

    1. 「プリンターとスキャナーの追加」から,「プリンターが一覧にない場合」を選ぶ
    2. 「ローカルプリンターまたはネットワークプリンターを手動設定で追加する」を選ぶ
    3. 「新しいポートの作成」から "Redirected Port" を選び(RedMon をインストール済みなら選べる),"RPT1:" ポートを作成
    4. 「プリンタードライバーのインストール」にて,「ディスク使用」を選ぶ
    5. 「参照」から Ghostscript のインストール先の lib フォルダを選び,ghostpdf.inf を選択する(※TeX Live 付属の tlgs.win32 には入っていない)
    6. プリンタ名を設定する.デフォルトでは "Ghostscript PDF" となる

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

    「プリンターのプロパティ」から,PostScript オプションで 出力データの形式を EPS に設定します.

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

    作成した RedMon のポート ("RPT1:" など)の設定をして, PS プリンタドライバの出力が ps2eps および epstopdf に引き渡されるようにします. ただし,設定には管理者権限が必要ですので,スタートメニューの「Windows システムツール」→「コマンドプロンプト」を右クリックし,「その他」→「管理者として実行」でコマンドプロンプトを起動したのちに,

    rundll32 printui.dll,PrintUIEntry /n "Ghostscript PDF" /p
    
    としてPS プリンタのプロパティ画面を出します(プリンタ名を変えているときは "Ghostscript PDF" の部分を適宜変更). そして,「ポート」→「ポートの構成」で

    などと設定すればよいでしょう. また,"Run as User" にもチェックを入れておきます(デフォルトでチェックされている).オプションはお好みで(ps2eps のマニュアルを参照).

  6. Windows 再起動

    新たに設定された PATH などが有効になるよう再起動します.

これで前準備は終了です.

 実際に PDF を作るためには, アプリケーションソフトから上記で設定したプリンタに印刷を行います. このとき,用紙設定が縦 (portrait) になっている必要があります. 横 (landscape) だとうまくいきません. 用紙設定を縦に設定した PowerPoint ファイルや LibreOffice Draw ファイルなどに (一時的に)コピー&ペーストしてもよいでしょう. また,1ページ分だけを印刷する必要があります. あとはダイアログで EPS のファイル名を指定すれば OK です.

 このようにすれば,印刷機能を持つほぼすべてのアプリケーションが, PDF 出力対応になります. できた PDF ファイルは,おおむね問題なく graphicx パッケージなどを 使って TeX の文書に取り込め,dvipdfmx などで処理可能です.

 うまく PDF が作成できない場合は,再び管理者権限でプリンターのプロパティを開き,「ポート」→「ポートの構成」→「Log File」でログファイルを作成するようにすれば,どんなエラーが発生しているかを調べて対策することができます.

<参考>


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

機種依存文字の問題

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

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

<参考>


dvipdfmx でサイズの小さい PDF を作る方法

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

D "rungs -q ..."
の行の,
-dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode
の部分を
-dAutoFilterGrayImages=true -dAutoFilterColorImages=true

と Ghostscript の起動オプションを変更すればよくなったようです.ただし,まだ 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 文書の場合)

<参考>


画像ファイルのPDF化

sam2p が使いやすいですが,JPEG ファイルを PDF に変換したら Acrobat で開けないことがありました.このときは

# sam2p -pdf:2 foo.jpg foo.pdf

とオプションを指定(PDFバージョン1.2,XObject imageを指定)することで回避できました.


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