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 - GitHub - py...
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ファイルを一括でパスワード保護するスクリプトもご紹介しましょう。
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をパスワードで保護します。
コメント