パスワードによる PDF ドキュメントのセキュリティ保護は、ドキュメント管理システム、コンプライアンス自動化ツール、エンタープライズコンテンツ管理プラットフォームを開発する開発者にとって重要なタスクです。不正アクセスを防ぐために PDF ファイルをパスワードで保護する場合でも、編集の柔軟性を取り戻すために 暗号化された PDF からパスワードを削除する場合でも、Python でこれらの操作を自動化することで効率とスケーラビリティが大幅に向上します。
ただし、PDF 暗号化を扱うには、オープンパスワードと権限パスワードという 2 つの異なるパスワードタイプを理解する必要があり、それぞれ異なるセキュリティ目的を持っています。開発者は、ドキュメントの権限をきめ細かく制御しながら、PDF ドキュメントをプログラムで暗号化および復号化する信頼性の高い方法を必要としています。
Spire.PDF for Python を使用すると、開発者はわかりやすい API を介して PDF ドキュメントにパスワード保護を設定し、PDF の保護を解除できます。本記事では、Python で PDF ファイルをパスワード保護する方法を示し、オープンパスワードの設定、権限制限の構成、暗号化された PDF ドキュメントの復号化を行います。
クイックナビゲーション
- PDF パスワード保護について
- Spire.PDF for Python のインストール
- Python で PDF にパスワードを保護
- Python で暗号化された PDF からパスワードを削除
- よくある問題と注意点
- まとめ
1. PDF パスワード保護について
PDF ドキュメントは、セキュリティ目的で 2 種類のパスワードをサポートしています。
- オープンパスワード(ユーザーパスワード) – PDF ファイルへの不正アクセスを制限するために使用されます。ユーザーはドキュメントを開いて表示するためにこのパスワードを入力する必要があります。
- 権限パスワード(所有者/マスターパスワード) – PDF ファイルに対して他のユーザーができる操作(印刷、テキストのコピー、編集、フォームフィールドの入力など)にさまざまな制限を設定できます。
PDF ファイルの両方のタイプのパスワードで保護されている場合、どちらのパスワードでもドキュメントを開くことができます。ただし、完全な権限の変更には権限パスワードが必要です。
Spire.PDF for Python を選ぶ理由
Spire.PDF for Python は、PdfSecurity クラスを通じて PDF セキュリティ管理のネイティブサポートを提供します。開発者は、きめ細かい権限制御で PDF ファイルを簡単に暗号化および復号化できます。
主な機能:
| 機能 | サポート状況 |
|---|---|
| オープンパスワードで PDF を保護 | ✓ |
| 権限パスワードで PDF を保護 | ✓ |
| ドキュメント権限の設定(印刷、コピー、編集) | ✓ |
| 暗号化キーサイズの選択(128 ビット、256 ビット) | ✓ |
| パスワード保護の解除 | ✓ |
| 複数の PDF のバッチ処理 | ✓ |
これらの機能は、ドキュメント管理システム、コンプライアンス自動化、エンタープライズコンテンツセキュリティ、その他自動 PDF 処理シナリオで特に役立ちます。
2. Spire.PDF for Python のインストール
このシナリオには Spire.PDF for Python と plum-dispatch v1.7.4 が必要です。pip を介してインストールします。
pip install Spire.PDF
Python スクリプトで必要なモジュールをインポートします。
from spire.pdf.common import *
from spire.pdf import *
または、Spire.PDF for Python のダウンロードページ から手動でライブラリをインストールすることもできます。
3. Python で PDF にパスワードを保護
Spire.PDF for Python が提供する PdfDocument.Security.Encrypt() メソッドを使用すると、オープンパスワードおよび/または権限パスワードで PDF ファイルを保護できます。PdfPermissionsFlags パラメータは、ドキュメントを操作するユーザーの権限を指定するために使用されます。
次の例は、オープンパスワードと権限パスワードの両方で PDF ファイルを暗号化する方法を示しています。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
doc = PdfDocument()
# サンプル PDF ファイルを読み込む
doc.LoadFromFile("C:/Users/Administrator/Desktop/input.pdf")
# オープンパスワードと権限パスワードで PDF ファイルを暗号化
doc.Security.Encrypt("openPsd", "permissionPsd", PdfPermissionsFlags.FillFields, PdfEncryptionKeySize.Key128Bit)
# 結果ファイルを保存
doc.SaveToFile("output/Encrypted.pdf", FileFormat.PDF)

主要な API メソッド
- PdfDocument – PDF ファイルの読み込み、操作、保存に使用される PDF ドキュメントコンテナを表します
- PdfDocument.Security – ドキュメントに関連付けられたセキュリティ設定オブジェクト(
PdfSecurity)を取得します - Encrypt() – オープンパスワード、権限パスワード、権限フラグ、暗号化キーサイズで PDF を暗号化します
- PdfPermissionsFlags – ドキュメントで許可される操作を指定します(例:
FillFields、Print、CopyContent) - PdfEncryptionKeySize – 暗号化キーの長さを指定します(例:
Key128Bit、Key256Bit) - SaveToFile() – 暗号化されたドキュメントをディスクに保存します
利用可能な権限フラグ
| 権限フラグ | 説明 |
|---|---|
None |
権限が付与されません |
Default |
デフォルトの権限 |
Print |
ドキュメントの印刷を許可 |
ModifyContents |
ドキュメントの内容の変更を許可 |
CopyContent |
テキストおよびグラフィックのコピーを許可 |
ModifyAnnotations |
注釈の追加または変更を許可 |
FillFields |
フォームフィールドの入力を許可 |
ExtractContent |
コンテンツの抽出を許可 |
AssembleDocument |
ドキュメントページの組み立てを許可 |
PrintHighQuality |
高品質な印刷を許可 |
このアプローチは、機密ドキュメントを保護するために強力な暗号化をサポートしつつ、受信者が実行できる操作を正確に定義できます。
4. Python で暗号化された PDF からパスワードを削除
PDF ファイルからパスワードを削除するには、PdfDocument.Security.Encrypt() メソッドを呼び出し、オープンパスワードと権限パスワードを空に設定します。次の例は、パスワードで保護された PDF を復号化する方法を示しています。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
doc = PdfDocument()
# 暗号化された PDF ファイルを読み込む
doc.LoadFromFile("C:/Users/Administrator/Desktop/Encrypted.pdf", "openPsd")
# オープンパスワードと権限パスワードを空に設定
doc.Security.Encrypt(str(), str(), PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit, "permissionPsd")
# 結果ファイルを保存
doc.SaveToFile("output/RemovePassword.pdf", FileFormat.PDF)
主要な API メソッド
- LoadFromFile(fileName, password) – オープンパスワードを使用して認証を行い、暗号化された PDF ファイルを読み込みます
- Encrypt(str(), str(), ...) – 空のパスワード文字列で呼び出すと、ドキュメントから既存のパスワード保護を削除します
- originalPermissionPassword – オーバーロードされた
Encrypt()メソッドの最後のパラメータで、復号化のために既存の権限パスワードを提供するために使用されます
5. よくある問題と注意点
読み込み時に正しいパスワードを指定する
暗号化された PDF を読み込む際は、正しいオープンパスワードを指定する必要があります。間違ったパスワードが指定された場合、ライブラリはエラーをスローします。
# 正しい: オープンパスワードを指定
doc.LoadFromFile("encrypted.pdf", "openPsd")
# 誤り: 暗号化されたファイルにパスワードがないと失敗する
doc.LoadFromFile("encrypted.pdf")
オープンパスワードと権限パスワードの区別
Encrypt() メソッドは、オープンパスワードと権限パスワードの両方を受け付けます。各パスワードがどの目的で使用されるかを必ず理解してください。
# オープンパスワード: ドキュメントを開くために必要
# 権限パスワード: 権限を変更するために必要
doc.Security.Encrypt("openPsd", "permissionPsd", PdfPermissionsFlags.FillFields, PdfEncryptionKeySize.Key128Bit)
両方のパスワードを削除する
すべての保護を完全に解除するには、オープンパスワードと権限パスワードの両方を空の文字列に設定し、元の権限パスワードを指定する必要があります。
# 正しい: すべてのパスワード保護を解除
doc.Security.Encrypt(str(), str(), PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit, "permissionPsd")
# 誤り: 一方のパスワードのみをクリアすると他方が有効なまま
doc.Security.Encrypt("openPsd", str(), PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit)
まとめ
本記事では、Spire.PDF for Python を使用して Python で PDF ドキュメントを保護および保護解除する方法を実証しました。Spire API を活用することで、開発者はオープンパスワードと権限パスワードで PDF ファイルをパスワード保護し、きめ細かいドキュメント権限を構成し、暗号化された PDF から パスワード保護を解除できます。この機能は、ドキュメントセキュリティ管理、コンプライアンスワークフロー、エンタープライズコンテンツ保護の自動化に不可欠です。
Spire.PDF for Python は、基本的なパスワード保護を超えた包括的な PDF セキュリティ機能を提供し、複数の暗号化キーサイズのサポート、きめ細かい権限フラグ、バッチ処理を含みます。このライブラリは、PDF 仕様との完全な互換性を維持しながら、PDF 暗号化を簡素化します。
Spire.PDF for Python の全機能を評価したい場合は、30 日間の無料ライセンスを申請できます。






