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になりました。悟っている時間もありません。
この記事が気に入ったらサポートをしてみませんか?