Python: 大量のワードファイルを一括してPDFにする方法

Python
この記事は約5分で読めます。

今回は別にPythonでやるまででは無い案件なのですが、pythonでJSONデータをレポート形式(ワードファイル)にした後に、フォーマットを一括して自動でPDF化したかったので、そのためのライブラリとスクリプトのご紹介です。

ぶっちゃければ、PDFへの一括変換だけの作業ですので、Adobe DCさんの力を借りれば一瞬ではあるのですが、画面遷移すらするのがめんどくさい、せっかくスクリプトでレポートフォーマットまでワード形式で作ったんだから、PDF化もpythonで一緒にやってしまいたい、とめんどくさがりの私は考えてしまいます。

そんなめんどくさがり屋さんのための記事だと思ってみてください。

スポンサーリンク

PythonでワードファイルをPDF化する方法

利用するライブラリ

今回はこのdocx2pdfというライブラリを利用します。

docx2pdf
Convert docx to pdf on Windows or macOS directly using Microsoft Word (must be installed).

ライブラリをgithubでみてもらうとわかりますが、正直めっちゃ薄〜いライブラリです。別に薄くても期待した通りの所作はしてくれるので問題はありませんw

対応OS

Windows 及び Macの両方とも対応可能です。

pipでのインストール方法

pip install docx2pdf

CLI

usage: docx2pdf [-h] [--keep-active] [--version] input [output]

Example Usage:

Convert single docx file in-place from myfile.docx to myfile.pdf:
    docx2pdf myfile.docx

Batch convert docx folder in-place. Output PDFs will go in the same folder:
    docx2pdf myfolder/

Convert single docx file with explicit output filepath:
    docx2pdf input.docx output.docx

Convert single docx file and output to a different explicit folder:
    docx2pdf input.docx output_dir/

Batch convert docx folder. Output PDFs will go to a different explicit folder:
    docx2pdf input_dir/ output_dir/

positional arguments:
  input          input file or folder. batch converts entire folder or convert
                 single file
  output         output file or folder

optional arguments:
  -h, --help     show this help message and exit
  --keep-active  prevent closing word after conversion
  --version      display version and exit

実際のサンプルコード(フォルダ内のワードファイルを一括してPDF化)

それでは、実際のサンプルコードをご覧ください。今回はフォルダ内のデータ(ワードファイル)を一括してPDFにしています。inputのデータフォルダとoutputのデータフォルダは別のフォルダを使う前提です。

rom docx2pdf import convert

"""
use library: https://github.com/AlJohri/docx2pdf
"""

def convert_pdf(input_dir="output/", output_dir="output_pdf/"):
    """
    docxファイルの保存されたフォルダを指定して、フォルダ格納データを全てpdfにして、指定フォルダに保存する
    :param input_dir: dir_name, default:output/,  outputフォルダを利用
    :param output_dir: dir_name, default:output_pdf/, output_pdfフォルダを利用
    :return: output_pdfフォルダにoutputフォルダのpdfが全て保存される
    """
    convert(input_dir, output_dir)

if __name__ == '__main__':
    input_dir = "output/"
    output_dir = "output_pdf/"
    convert_pdf(input_dir, output_dir)

ぶっちゃけライブラリをインポートして、実行関数を一つ設定してるだけですが、これで300くらい元フォルダ(今回の場合はoutput/)にあるデータが10秒足らずでpdf化されてoutput_pdf/フォルダに吐き出されます。

実際はワードを作るpython scriptにおいて、convert_pdf methodを呼び出して使っていますが、今回はわかりやすいように一応mainも書いておきました。

Adobe DCでワードをPDFに一括変換する方法

もちろん同様の作業はAdobe DCからでも実行可能です。

step1: ファイル→作成→複数のPDFファイルを作成…をクリック

step2: ファイルもしくはフォルダを指定してOKをクリック

まとめ

別にこれくらいマニュアルでやるよ、って人の方が多いかと思いますが、画面遷移させたりfolder選択したりするのめんどくさい私はこれもスクリプトに頼ってしまっています汗

効率化って実は大きな作業もそうなんですが、画面遷移やファイル探しなんかで手間かけるのを削除することも重要だと思ってます。特に結構な頻度でやる作業や、逆に月1回とかしかやらない作業(フォルダの場所忘れる問題)なんかでは。

コメント

タイトルとURLをコピーしました