【Python】PDFにパスワードをかけるには?大量のPDFを一括保護するスクリプトもご紹介

Python

PythonでPDFにパスワードを設定してみましょう。大量のPDFファイルを一括でパスワード保護するスクリプトも紹介しています。

スポンサーリンク

PyPDF2のインストール

今回のサンプルではPythonでPDFを扱えるライブラリ「PyPDF2」を使っていきます。

GitHub - py-pdf/pypdf: A pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files
A pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files - py-pdf/pypd...

pipコマンドでインストールできますので、あらかじめインストールしておきましょう。

pip install PyPDF2
スポンサーリンク

PDFをパスワードで保護するには?

さっそくコードをご紹介します。

import os
from PyPDF2 import PdfReader, PdfWriter

# PDFファイルのパス
filepath="test.pdf"
# パスワード
password="password"

# PDFを読み込む
reader = PdfReader(filepath)
# 新しいPDFを作成する
writer = PdfWriter()

# 既存ファイルからページを取り込む
for page in reader.pages:
    writer.add_page(page)

# パスワードでファイルを暗号化
writer.encrypt(password)

# 暗号化したPDFを保存する
#   元のファイル名に_encryptedをつけたファイル名で保存する
with open(os.path.splitext(os.path.basename(filepath))[0]+"_encrypted.pdf", "wb") as f:
    writer.write(f)

スクリプトの最初でパスワードで保護したいPDFファイルのパスとパスワードを指定します。

# PDFファイルのパス
filepath="test.pdf"
# パスワード
password="password"

スクリプトを実行すると、パスワードで保護されたPDFが生成されます。ファイル名はもとのファイル名に「_encrypted」という文字列が付与されたものとなります。

生成されたPDFファイルを開こうとすると、パスワードを要求されます。

大量のPDFを一気にパスワードで保護する

複数のPDFファイルを一括でパスワード保護するスクリプトもご紹介しましょう。

import os
import glob
from PyPDF2 import PdfReader, PdfWriter

# PDFファイルのパス
folderpath="C:/Users/user/Desktop/pdf"
# パスワード
password="password"


# ファイルの一覧を取得する
files=glob.glob(folderpath+"/*.pdf")
print(files)

# ファイルごとに処理する
for file in files:
                
    # PDFを読み込む
    reader = PdfReader(file)
    # 新しいPDFを作成する
    writer = PdfWriter()

    # 既存ファイルからページを取り込む
    for page in reader.pages:
        writer.add_page(page)

    # パスワードでファイルを暗号化
    writer.encrypt(password)

    # 暗号化したPDFを保存する
    outpath=os.path.join(folderpath,os.path.splitext(os.path.basename(file))[0])
    with open(outpath+"_encrypted.pdf", "wb") as f:
        writer.write(f)
    print("ファイルを暗号化しました:"+outpath)
    
print("処理終了")

上記スクリプトを実行すると、デスクトップにあるフォルダ(ここではC:/Users/user/Desktop/pdf)にあるすべてのPDFをパスワードで保護します。

コメント

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