English

PDFにパスワードや情報を設定 (バージョン2)

March 6, 2008
新居雅行 / msyk@msyk.net
最終更新日:

「PDFにパスワードや情報を設定」は、PDFファイルにパスワードを設定したり、キーワードなどの情報を設定することができるます。コマンドラインツールのpdfauxinfoとAutomator用のアクション「PDF に補助情報を追加」が含まれています。これらはいずれもMac OS X Leopardでのみ稼働します。アクションはコマンドラインを使います。Tiger向けにはバージョン1がありあますので、そちらを参照してください。

これを作成した動機は、パスワードなしに開くものの、印刷時にはパスワードを入れないといけないようなPDFを作成する必要があったからです。Adobe Acrobatを使えば勿論作成できますが、PDFにそうしたセットアップをするだけにAcrobatを利用するのはどうかと思いましたし、シンプルな設定なのにたくさんのクリックをしなければなりませんでした。Mac OS Xでの解決法をいろいろと探しました。もちろんあったのですが、Acrobatより高価であり、単にパスワードを付けるだけに購入するのもどうかと思った次第です。Mac OS Xではシステムに含まれるPDFKitという機能を使えば、PDF関連処理は簡単に作成できるので、自分で作ってみようと考えました。それが2006年のことで、Tigerで稼働するバージョン1を作成しました。2007年10月にはLeopardが登場しましたが、残念ながらバージョン1は動作しませんでした。報告をいただいてはいましたが、2008年3月にやっとLeopard版ができあがりました。(レポートをくれたMike Bowieに感謝します。)

PDFKitはそれなりに強力ですが、思うように動いてくれないときもあります。悩んだ事については、Cocoa勉強会のメンバーが助けてくれた事もありました。特に黒木さんには感謝をします。

ダウンロード

「PDFにパスワードや情報を設定(バージョン2)」はMac OS X v10.5以降のシステムで稼働します。

インストール用のパッケージを利用すれば、コマンドとアクションがそれぞれ1つずつシステムにインストールされます。コマンドは /usr/sbin/pdfauxinfo に置かれます。アクションは /Library/Automator フォルダにインストールされます。

ソースコーソを参照したいのであれば、こちらからどうぞ。Xcode 3でコンパイル可能な2つのプロジェクトが含まれています。

このページから配布されるものは、利用者の方の責任でご利用ください。作者は当該機能についての提供を完全に保証はしません。障害が発生した場合の責任も取りません。本件に関する著作権は作者に帰属しますが、基本的に2次使用についてのライセンス料金等を取ることは行いません。ご意見やご要望をお寄せください。

Automatorアクション「PDF に補助情報を追加」

Automatorアクションの「PDF に補助情報を追加」は、パスワードや各種情報をPDFに設定できます。アクションはファイルを入力に受け付けますが、1つのファイルだけにしか動作しません。つまり、リスト入力を受け付けませんので、PDFファイルを1つずつ処理させてください。アクションが実行された後、変更をしたPDFが/tmpフォルダに作られます。元のPDFには何の変更も行いません。

アクションはコマンドラインツールのpdfauxinfoを使います。このコマンドラインは、インストーラでインストールされます。コマンド自体はMac OS X v10.5でのみ稼働します。

アクションの中には7つのテキストフィールドがありますが、それぞれは見出しに書かれた内容です。2つのパスワードのテキストフィールドは、キータイプしてもドットに代わり文字は見えません。入力のPDFにこれらの情報が付加されたPDFが新たに作成されます。テキストフィールドに何も設定がない場合には、その項目は特に追加はされません。つまり空欄にしたら空白の文字列が設定されるということではありません。

許可に関する2つのチェックボックスと、暗号化のビット数に関するチェックボックスがあります。「128ビットの暗号化」によりもちろん128ビットの暗号化が可能ですが、チェックしない場合は40ビットの暗号化になります。

許可についてのチェックボックスの状態には注意をしてください。通常、チェックボックスはオン/オフの2つの状態しか取りません。しかしながら、これらの許可のチェックボックスは「許可する」「許可しない」「指定なし」の3つの状態を取ります。「指定なし」はアクションによって許可の情報については何も設定されず、入力されたPDFの状態と同じになるということを意味します。以下の図は、それぞれの状態と、対応するpdfauxinfoコマンドのパラメータの対応を示しています。

「許可する」
--permitCopying YES
--permitPrinting YES
「許可しない」
--permitCopying NO
--permitPrinting NO
「指定なし」つまり設定を変えない
コマンドラインではパラメータ設定なし

コマンドラインツール「pdfauxinfo」

pdfauxinfoコマンドはPDFにパスワードを設定したり各種情報を追加することができます。Mac OS Xでのみ稼働し、Leopard以降のMac OS Xが必要です。コマンドラインの必要性は明確です。シェルスクリプトでこの機能が使えるということがメリットだからです。コマンドラインの利用方法は以下の通りです。これは、--helpオプションによる表示結果と同様です。

$ /usr/sbin/pdfauxinfo --help
Description:
  pdfauxinfo can set the auxiliary information to PDF file using PDFKit in Cocoa.
  This is the version 2.x command line tool for Leopard only.

Parameters:
  --sourcePDFFile, -i Input_File_Path            Original PDF File path.
  --convertedPDFFile, -o Output_File_Path        Converted PDF File path.
  --author, -a Author_Name                       Author info of the converted PDF.
  --creator, -k Creator_Name                     Creator info of the converted PDF.
  --title, -t Title_of_Document                  Title of the converted PDF.
  --userPassword, -u User_Password               User Password for the converted PDF.
  --ownerPassword, -x Owner_Password             Owner Password for the converted PDF.
  --permitPrinting, -p [YES|true|1|NO|false|0]   Permission for printing the converted PDF.
  --permitCopying, -c  [YES|true|1|NO|false|0]   Permission for copying the text.
  --subject, -s Subject                          Subject for the converted PDF.
  --keyword, -k Keyword,Keyword...               Keywords for the converted PDF, devide by ','.
  --encryptionKeyLength, -e length               Encryption key length by bit.
  --debug, -d                                    Debug mode.
  --help, -h                                     Show this message.

For the option permitPrinting and permitCopying, YES or true or 1 means permitting, 
the others means not permitting.

The encryptionKeyLength option must be a multiple of 8 between 40 and 128.
If this option is not specified, 40 bit will use to encrypt.
If this option is set to other than 40, 128 bit RC4 will use to encrypt.

Required options are sourcePDFFile and convertedPDFFile.

pdfauxinfo v2.x works just only Mac OS X Leopard or later.

必ず指定する必要があるパラメータは、--sourcePDFFileおよび--convertedPDFFileで、それぞれ異なるパスである必要があります。--convertedPDFFileで指定したファイルが既に存在する場合、確認なしに上書きします。標準入出力についてはサポートしていません。

返り値が0の場合、変換したPDFファイルが正しく作成されたことを意味します。必須の引数を設定していない場合は1を返します。その他のエラーコードはソースを参照してください。デバッグモードにより設定しようとしているPDF補助情報をCFShowの機能を使って出力します。

パスワードと許可についての考察

「文書を開くパスワード」と「権限パスワード」の2つのパスワードをPDFに設定できます。これらはもともとuser passwordとowner passwordという名前ですが、Adobeのソフトでは直訳は避けているようですので、その用語に従いましょう。パスワードを掛けた場合の動作については、PDFリーダのソフトに依存します。印刷の許可についての動作をチェックしたのが以下の表です。

設定結果動作
文書を開くパスワード権限パスワード印刷の許可Preview 4.1(Mac OS X Leopard)Adobe Reader 8.1.2 for Mac
PDFを開くときのパスワードが必要。どちらのパスワードでもよい。開いた後印刷が可能
×
PDFを開く時印刷をするとき
文書を開くパスワードを入力権限パスワードを入力後に印刷できる
権限パスワードを入力そのまま印刷できる
いずれのパスワードでも文書を開く事ができるが、印刷はできない
×文書を開くパスワードで文書を開く。その後はそのまま印刷ができる
××文書を開くパスワードで文書を開く。印刷はできない
×パスワードなしに開く事ができ、印刷ができる
××パスワードなしに開く。印刷をするには権限パスワードが必要パスワードなしで開くが印刷はできない

プログラムでは、「文書を開くパスワード」だけを設定することができず、必ず「権限パスワード」の設定が必要になります。「権限パスワード」を無効にするために、"" をパスワードとして設定することになっているようです。このように動作する理由は分かりませんが、フレームワークの動作上のことと思われます。