フォルダの中のPDFにパスワードを設定したいときがあります。
しかしファイル数が多い場合、手作業でパスワード設定していると多くの時間が必要になります。
そこで、Pythonを使って「フォルダの中のPDFにパスワードを自動設定する」方法を紹介します。
実際にどのようなことができるかは以下の動画で解説をしています。
目次
Pythonプログラムの使用手順
ステップ1|Pythonをインストールする
PythonをPCにインストールしていない人は、こちらのサイトを参考にインストールしてみてください。
ステップ2|ライブラリをインストールする
コマンドプロンプトからOpenPyXLとPyPDF2をインストールします。
1 |
pip install OpenPyXL |
1 |
pip install PyPDF2 |
上記のインストール方法はこちらのサイトが親切です。
ステップ3|プログラムを使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
from openpyxl import load_workbook import pathlib import datetime import PyPDF2 import os import sys import random, string now=datetime.datetime.now() print(now, "処理開始") filepath = 'C:\\***\\Password_Template.xlsx' #ここはTemplateエクセルの保管場所 wb = load_workbook(filename=filepath) ws1 = wb['Password_List'] lastrow1=ws1.max_row BaseFolder = 'C:\\***' #password設定したPDFの保管先 PDFFolder = 'C:\\***' #password設定したいPDFが保管されている場所 PATH1 = pathlib.Path(PDFFolder) Filepath=[ str(p) for p in PATH1.iterdir()] Filename=[p.name for p in PATH1.iterdir() if p.is_file()] if len(Filepath) >0: now=datetime.datetime.now() datetrancated= now.strftime("%Y/%m/%d %H:%M:%S") datetrancated = datetrancated.replace("/","-") datetrancated = datetrancated.replace(":","-") datetrancated = datetrancated.replace(" ","-") newfolder_path = BaseFolder + "\\" + datetrancated os.makedirs(newfolder_path) else: print("所定フォルダにファイルが保管されていません") sys.exit() for k in range(1, len(Filepath)+1): ws1.cell(row=k+1, column=1).value = k ws1.cell(row=k+1, column=2).value = Filepath[k-1] randam="" randampass = ''.join(random.choices(string.ascii_letters + string.digits, k=8)) with open(Filepath[k-1], mode='rb') as pdfFileObj1: pdf1 = PyPDF2.PdfFileReader(pdfFileObj1) if pdf1.isEncrypted == False: pdf2=PyPDF2.PdfFileWriter() pdf2.cloneReaderDocumentRoot(pdf1) pdf2.encrypt(randampass) FILE_PATH2=newfolder_path + "\\Pw_" + Filename[k-1] with open(FILE_PATH2, mode='wb') as pdfFileObj2: pdf2.write(pdfFileObj2) ws1.cell(row=k+1, column=3).value = randampass ws1.cell(row=k+1, column=4).value = datetime.datetime.now() newfilepath =newfolder_path + "\\Pw_" + datetrancated + ".xlsx" wb.save(newfilepath) print(now, "処理終了") |
このPythonプログラムのメリット、デメリット、活用方法
このPythonプログラムのメリット、デメリット、活用方法について、動画内(2分30秒~)で解説しています。
ぜひそちらをご覧になった上でご活用ください。