見出し画像

PythonでWordをPDFに変換

これは実話です・・・

みんな無言でパソコンに向かっている姿は神々しくもありました。

単純作業に神が見えてきたのでしょうが、いったん悟りと仕事をやめてもらって、30分、時間をもらいました。

まずは環境を確認

これはこないだやったPathlibの出番です。

Pathでディレクトリを登録して、globでその配下のフォルダを取ってきます。
こんな感じでfor文で回すことができそうです。

from pathlib import Path
directory_path = r'C:\Word_PDF\docs'

for word_file_path in Path(directory_path).glob('*'):

各サブフォルダごとに、ワードファイルをglobで検索して、またfor文でLoopさせます。

from pathlib import Path
directory_path = r'C:\Word_PDF\docs'

for word_file_path in Path(directory_path).glob('*'):
    for file_name in word_file_path.glob('*.docx'):

新しくできるPDFファイルは、Wordファイルと同じ名前にしたいという要望がありました。

というわけで、.with_suffixを使って、作成予定のファイル名を作りました。
念のためにprintで出力してみました。

from pathlib import Path
directory_path = r'C:\Word_PDF\docs'

for word_file_path in Path(directory_path).glob('*'):
    for file_name in word_file_path.glob('*.docx'):
         pdf_file_path = file_name.with_suffix(".pdf")
         print(pdf_file_path)

うまくできてますね。

C:\Word_PDF\docs\v1\Test1.pdf
C:\Word_PDF\docs\v2\Test2.pdf
C:\Word_PDF\docs\v3\Test3.pdf

そろそろ仕上げに入りましょう。PDF変換には、"convert"ライブラリを使います。失敗した時のエラートラップとしてtry ~ exceptを使います。

変換に成功した時と、失敗した時で出力メッセージを変えます。

        try:
            convert(word_file_name, pdf_file_name)
            print(f"Converted: {word_file_name} to {pdf_file_name}")
        except Exception as e:
                print(f"Conversion failed for {word_file_name}: {e}")

それでは完成形です。

#フォルダ内にあるwordをPDFに変換
from docx2pdf import convert
from pathlib import Path

# ディレクトリのパス
directory_path = r'C:\Word_PDF\docs'

#pathlibを使ってフォルダ取得
for word_file_path in Path(directory_path).glob('*'):    

    for word_file_name in word_file_path.glob('*.docx'):
        pdf_file_name = word_file_name.with_suffix(".pdf")

        try:
            convert(word_file_name, pdf_file_name)
            print(f"Converted: {word_file_name} to {pdf_file_name}")
        except Exception as e:
                print(f"Conversion failed for {word_file_name}: {e}")

複数のサブフォルダの中にあるWordファイルがあっという間にPDFになりました。悟っている時間もありません。

v1フォルダにTest1.pdfができています。
(v2,v3にもそれぞれできています)

この記事が気に入ったらサポートをしてみませんか?