【Python】PDFを暗号化する
機能
PDFを暗号化するPythonプログラムです。
サンプル動画
プログラム
#! python3 # 機能 # PDFを暗号化する # 使い方 # 1.Pythonを実行する # 実行コマンド # python pdf_encrypter.py 入力フォルダ 出力フォルダ パスワード # python pdf_encrypter.py input output password import os import sys import PyPDF2 def encrypt_pdf(src, enc, password): print('暗号化中:', src, '->', enc) with open(src, 'rb') as src_file: src_reader = PyPDF2.PdfFileReader(src_file, strict=False) if src_reader.isEncrypted: print('エラー:すでに暗号化されています。', src) return False enc_writer = PyPDF2.PdfFileWriter() for i in range(src_reader.numPages): enc_writer.addPage(src_reader.getPage(i)) with open(enc, 'wb') as enc_file: enc_writer.encrypt(password) enc_writer.write(enc_file) return True def verify_pdf(src, enc, password): print('検証中:', enc) with open(enc, 'rb') as enc_file: enc_reader = PyPDF2.PdfFileReader(enc_file, strict=False) if not enc_reader.isEncrypted: print('エラー:暗号化されていません。', enc) return False if not enc_reader.decrypt(password): print('エラー:暗号を解除できません。', password) return False with open(src, 'rb') as src_file: src_reader = PyPDF2.PdfFileReader(src_file, strict=False) if src_reader.numPages != enc_reader.numPages: print('エラー:ページ内容が異なります。', src, enc) return False for i in range(src_reader.numPages): src_text = src_reader.getPage(i).extractText() enc_text = enc_reader.getPage(i).extractText() if src_text != enc_text: print('エラー:ページ内容が異なります。', src, enc) return False return True def walk_encrypt_pdf(input_folder, output_folder, password): os.makedirs(output_folder, exist_ok=True) for file_name in os.listdir(input_folder): if not file_name.lower().endswith('.pdf'): continue input_file = os.path.join(input_folder, file_name) output_file = os.path.join(output_folder, file_name) if encrypt_pdf(input_file, output_file, password): verify_pdf(input_file, output_file, password) if len(sys.argv) != 4: sys.exit('使い方:python pdf_encrypter.py 入力フォルダ 出力フォルダ パスワード') walk_encrypt_pdf(sys.argv[1], sys.argv[2], sys.argv[3])
使い方
- Pythonを実行する
実行コマンド
python pdf_encrypter.py 入力フォルダ 出力フォルダ パスワード python pdf_encrypter.py input output password