【Python】PyPDF2でPDFデータのパスワードを解除(復号)する方法

python
スポンサーリンク
ピーター
ピーター

PythonでPDFデータを読み込んだらパスワードが掛かっていて読めない!

という問題に副業中に起きたため、今回はPythonでPDFデータに設定されているパスワードを解除する方法について記載します。

今回の記事では、PyPDF2を使ってPDFデータの

  • パスワードが設定されている確認する方法
  • パスワードを解除する方法

について説明します。

pdf2imageでパスワードを解除する方法は見つからなかったので、パスワードの設定を解除する場合は、こちらの方法で実装する必要があります。



PyPDF2のインストール

pipでインストールしている場合のコマンド

pip install pypdf2

PyPDF2の情報はこちらです。

PyPDF2 Documentation — PyPDF2 1.26.0 documentation

PythonでPDFデータのパスワードを確認するためのコード

パスワードを確認する際は、isEncrypted()を使います。パスワードが掛かっている場合は、PDFデータを開くことができません。

from PyPDF2 import PdfFileReader

input_pdf_path = 'in_pdf/sample.pdf'
pdf = PdfFileReader(str(input_pdf_path))

print(pdf.isEncrypted)
# パスワード設定されている場合:True
# パスワード設定されていない場合:False

これでパスワードの有無を確認ができるのでシンプルですね!

PythonでPDFデータのパスワードを解除するためのコード

パスワードを解除する際は、decrypt()を使います。

  • パスワードが一致していない場合:0
  • ユーザーパスワードと一致している場合:1(PDFデータを開くことが可能)
  • オーナーパスワードと一致している場合:2(PDFデータの印刷、更新、コピーが可能)
from PyPDF2 import PdfFileReader

input_pdf_path = 'in_pdf/sample.pdf'
pdf = PdfFileReader(str(input_pdf_path))

print(pdf.decrypt('password'))
# パスワードが一致していない場合;0
# ユーザーパスワードが一致している場合;1
#    ユーザーパスワードはPDFデータを開くためのパスワード
# オーナーパスワードが一致している場合;2
#    オーナーパスワードはPDFデータを印刷、更新、コピー等をするためのパスワード

これでパスワードの有無を確認ができるのでシンプルですね!

ピーター
ピーター

PDFデータを確認したり、解除するケースもあるのでコードとして実装しています!

パソコンの性能によっては、PDFのページ数が多い場合にエラーとなってしまうケースがあります。

その回避方法についてもはこの記事を参考にしてください!

コメント

ランキング

タイトルとURLをコピーしました