請求書をPDFで作ったときPDFのタイトルメタデータを変更するPython

GoogleスプレッドシートやGoogleドキュメントなどで請求書を作成して発行している人ならわかると思うのですが、PDFに書き出しをした際に、タイトルのメタデータはそのファイル名になってしまいます。

なお、そのタイトルはエクスプローラー上でPDFのタイトルを変更しただけでは変更できません。
しかもまとめて変更するのは超めんどくさいです。

しかもファイルタイトルを変更するためのソフト(代表的なのはAdobe Acrobat)も有料がほとんど。。。

とか管変えてた時にPythonのコードをあさっていた時にたまたまPyPDF2というライブラリを発見し、
これいけるやん!!!Σ(・□・ )
ってなったので備忘録。

ファイルエクスプローラー上に表示されるファイル名がPDFのタイトルメタデータになるようにしました。

pip install PyPDF2
import os
import PyPDF2

def change_pdf_title(input_pdf, new_title):
    with open(input_pdf, 'rb') as file:
        reader = PyPDF2.PdfReader(file)
        writer = PyPDF2.PdfWriter()

        for page_num in range(len(reader.pages)):
            writer.add_page(reader.pages[page_num])

        # メタデータを更新
        metadata = reader.metadata
        metadata_dict = {key: metadata[key] for key in metadata.keys()}
        metadata_dict['/Title'] = PyPDF2.generic.NameObject(new_title)
        writer.add_metadata(metadata_dict)

        # 上書き保存
        with open(input_pdf, 'wb') as output_file:
            writer.write(output_file)

def update_pdf_titles_in_directory(directory):
    for filename in os.listdir(directory):
        if filename.endswith('.pdf'):
            input_pdf_path = os.path.join(directory, filename)
            new_title = os.path.splitext(filename)[0]
            change_pdf_title(input_pdf_path, new_title)
            print(f'Title of {filename} updated to {new_title}')

# PDFを格納しているディレクトリ指定
directory_path = r'C:\Users\user\Downloads'

update_pdf_titles_in_directory(directory_path)