PDFタイトルを設定する

 PDFファイル中のメタデータに含まれるタイトル情報を編集する方法について記載します。
 

はじめに

 ImageMagick(と、Ghostscript)を使ってPDFファイルを生成するとメタデータに含まれるタイトルは、出力PDFファイル名が設定されます。残念ながらコマンドラインオプションで任意タイトルを設定できるわけでもありません。
 ※前提とする処理系は日本語Windows環境です。
 
 例えばPAGE_*.pngを元に、OUTPUT.pdfを生成する場合は以下のようなコマンドを実行します。

>convert PAGE_*.png OUTPUT.pdf

 生成されたOUTPUT.pdfのメタデータ中のタイトルをExiftoolで確認すると"OUTPUT"になっています。

>exiftool -title OUTPUT.pdf
Title                           : OUTPUT

 

ImageMagickでPDF生成時に任意タイトルを設定

英数字タイトル

 この関係を逆手にとって、"THIS IS A TITLE STRING"とタイトルを設定したい場合は、以下のようなコマンドを実行すればよいことが判ります(出力ファイル名を設定したいタイトルとしてコマンドを叩いた後、出力ファイル名をリネームする)。

>convert PAGE_*.png "THIS IS A TITLE STRING".pdf
>ren "THIS IS A TITLE STRING".pdf OUTPUT.pdf

 OUTPUT.pdfのメタデータ中のタイトルをExiftoolで確認すると"THIS IS A TITLE STRING"になっています。

>exiftool -title OUTPUT.pdf
Title                           : THIS IS A TITLE STRING

 

日本語タイトル

 マルチバイト文字である日本語でも同様ですが、確認には注意が必要です。

>convert PAGE_*.png "タイトルです".pdf
>ren "タイトルです".pdf OUTPUT.pdf

 OUTPUT.pdfのメタデータ中のタイトルをExiftoolで確認すると文字化けしているように見えます。これは日本語Windows環境のDOS窓のデフォルトの文字コード(SJISというかMS932)と、メタデータ文字コード(UTF8)が一致していないためです。chcpコマンドでコードページを変更した後に確認すれば正常にタイトル設定されていることが判ります(chcp 932でMS932に戻りますが、chcpコマンドが有効なのはそのDOS窓内だけなので、いったん閉じて再度cmdを起動すればMS932です)。

>rem MS932では文字化けが発生する
>exiftool -title OUTPUT.pdf
Title                           : 繧ソ繧、繝医Ν縺ァ縺・

>rem コードページをUTF8に変更
>chcp 65001
Active code page: 65001
>exiftool -title OUTPUT.pdf
Title                           : タイトルです

 PDFタイトルが確認できるブラウザやPDF閲覧ソフトでファイルを開いてみれば文字化けしていないことが確認できます。
 

既存PDFファイルのタイトルを設定

 JPEGメタデータだけではなく、PDFにも対応していることはあまり知られていませんが、exiftoolで設定可能です。

英数字タイトル

 Exiftoolを使ったことのあるユーザにとっては特に違和感なく使用可能です。

>rem PDFタイトルを設定(既存のタイトルがあれば上書き)
>exiftool -title="THIS IS A MODIFIED TITLE STRING" TARGET.pdf
    1 image files updated

>rem PDFタイトルを確認
>exiftool -title TARGET.pdf
Title                           : THIS IS A MODIFIED TITLE STRING

 

日本語タイトル

 文字コードを意識しないと化けるので厄介です。

 ExiftoolのオプションやDOS窓のコードページの組み合わせを複数試してみましたが、どうやらWindows環境ではコマンドラインから直接指定することはできないようです。リファレンスにも以下の記述がありますし。

But note that it is not trivial to pass properly encoded file names on the Windows command line (see http://owl.phy.queensu.ca/~phil/exiftool/faq.html#Q18 for details), so placing them in a UTF-8 encoded -@ argfile is recommended if possible.

exiftool Application Documentation

 そこで、あらかじめ以下のように日本語タイトルを記述したARGFILEを作成し、UTF8エンコーディングで保存します。

-title=更新したタイトルです

 UTF8にコードページを変更したDOS窓中で、上記ARGFILEを指定してPDFタイトルを設定します。

>rem コードページをUTF8に変更
>chcp 65001

>rem PDFタイトルを設定(既存のタイトルがあれば上書き)
>exiftool -@ ARGFILE TARGET.pdf
    1 image files updated

>rem PDFタイトルを確認
>exiftool -title TARGET.pdf
Title                           : 更新したタイトルです

 



以上。