【Python】pdfファイルのパスワードを解除しよう!

  • 2019年12月14日
  • 2020年4月26日
  • Python

こんにちは!

皆さんは、パスワード付きのpdfファイルをもらったことはありませんか?

パスワード付きのpdfファイルは、パスワードを入力してファイルを開いても、一度閉じるともう一度パスワードを入力しないといけません。

何度も見るファイルだった場合は毎回パスワードを入力するのは面倒ですよね。
pdfのパスワード自体を解除できたら便利とは思いませんか?

今回の記事では、Pythonでpdfファイルのパスワードを解除する以下の方法を紹介していきます。

  • pikepdfを使用してpdfファイルのパスワードを解除する方法

pikepdf

今回使用するライブラリは、「pikepdf」というライブラリです。

GitHub

A Python library for reading and writing PDF, powered by qpd…

pikepdfとは

pikepdfとは、pdfのパスワード解除のためのPythonライブラリです。

pdfを扱うライブラリで有名な「PyPDF2」というライブラリがあるのですが、このライブラリを使用してパスワードを解除できる暗号化には制限があります。

具体的には、PyPDF2で解除できる暗号化は「RC4」のみで、「AES」は解除できないみたいです。

pikepdfでは上記のどちらの暗号化でも解除できるので、今回はこのライブラリを使用していきます。

ちなみにpikepdfでも、pdfを公開鍵で暗号化したものは解除できないみたいです。(僕は詳しくないのでこの暗号化方式は全然知りません)

pikepdfのインストール方法

pikepdfをインストールするには以下のコマンドを入力しましょう。

pip install pike pdf

パスワードの解除方法

では早速パスワードを解除するプログラムを見ていきましょう。

パスワードを解除後は、新しいpdfファイルが作成されます。

ディレクトリ構成は以下のようになっています。

pdfpass.pyは、pdfのパスワードを解除するためのプログラム
samplepdf.pdfは、「password」とパスワードが設定されたサンプルpdfファイルです。

以下のプログラムは、パスワードの設定された「samplepdf.pdf」のパスワードを解除して、「unlocked.pdf」に内容を書き出すプログラムです。

from pikepdf import Pdf

password = 'password'   #pdfのパスワード

filename = "samplepdf.pdf"   #パスワードを解除したいpdfの名前
newfilename = "unlocked.pdf"   #パスワード解除後のpdfの名前

pdf = Pdf.open(filename, password=password)
pdf_unlock = Pdf.new()
pdf_unlock.pages.extend(pdf.pages)
pdf_unlock.save(newfilename)

解説

pdf = Pdf.open(filename, password=password)

この部分で、pdfファイルとパスワードを指定して、pdfファイルを開きます。

pdf_unlock = Pdf.new()

この部分で、パスワード解除したpdfファイルを保存するための新しいpdfファイルを作成します。

pdf_unlock.pages.extend(pdf.pages)
この部分で、パスワード解除したpdfファイルを、新しく作成したpdfファイルに付け加えます。
pdf_unlock.save(newfilename)

最後にこの部分で、作成したpdfファイルを保存します。

実行結果

「unlocked.pdf」という名前のpdfファイルが作成されています。

このファイルは、見てもわかるように鍵マークがついていないため、パスワードが解除できていますね。

「sample pdf.pdf」と「unlocked.pdf」に書かれている内容はもちろん同じです。

残念ながら、pdfファイルのパスワードがわからない場合には使用できません。

パスワードが分かっているpdfファイルのパスワードを解除する際に使用しましょう。

まとめ

今回の記事では、Pythonでpdfファイルのパスワードを解除する以下の方法を紹介しました。

  • pikepdfを使用してpdfファイルのパスワードを解除する方法
     →パスワードがついたpdfファイルのパスワードを解除して
      新しくpdfを作成

Pythonでpdfファイルのパスワード解除ができるようになると、一度にたくさんのpdfファイルのパスワードを解除できるようになるのでとても便利です。

ゼひパスワード解除の方法を覚えておきましょう!