##はじめに
パスワード付きのPDFは開くたびにパスワードの入力を求められてストレスが溜まります。そのストレスをぶつけたらスクリプトが出来ましたので紹介します。
##PythonにおけるPDFの扱い
おそらくPythonでPDFを読み書きしようとすると、まずPyPDF2というライブラリを使う事になると思います。しかしながらパスワードロック解除については、限定された条件のPDFにしか対応していないため、C++のライブラリのqpdfなどとの合わせ技にせざるを得ません。
##pikepdf
マイナーなライブラリでpikepdfというものがあり、MPL ライセンスなのでたぶんライセンス表記しておけば怒られないんだろうと思います。このライブラリはqpdfを内蔵?しているようなので、前述のケースとは違い、ライブラリはpikepdfだけで完結します。
pip install pikepdf でインストール可能です。
##完成品
https://github.com/Kanahiro/PDFUnlocker
こちらにスクリプトの完成品をアップしてあります。こきたないコードですが許してください。
zipファイルの中身はWindows32bit環境で動作する(であろう)実行ファイル一式です。Pyinstallerで作成しました。ほんとは--onefileで使いたかったんですけど、ライブラリ周りでこけたので諦めました。PDFファイル名を「(パスワードの文字列).pdf」として、.exeにドラッグドロップすると、パスワードが解除されたPDFファイルが「decrypt.pdf」として出力されます。
##おわりに
ライブラリは神、ライブラリを作る人は神の上か!?
ぼくもライブラリかけるようなおとなになりたいと思いました。