LibreOfficeを使って印刷物(PDF)を作る方法 プリンターへの印刷 4/4

プログラミング

住所録から封筒へ – LibreOfficeを使った自動化印刷 プリンターへの印刷

概要

前回まででPDFへの印刷が出来ました。LibreOffice Calcから直接印刷する方法も可能とは思いますが、今回はSumatraPDFを使った印刷方法を紹介します。

SumatraPDFは、オープンソースのPDFビューア(他も色々読めます) です。PDFファイルを開くだけでなく、コマンドラインからの操作も可能です。

この方法は、今回のPDFの印刷だけでなく何かをまとめて印刷する方法として応用が利きます。

SumatraPDFのインストール

SumatraPDFをダウンロードします。

SumatraPDF HP
SumatraPDF ダウンロード

ダウンロードしてインストールしてください。

SumatraPDFのコマンドライン

SumatraPDFの印刷する多面のコマンドについて説明します。

まず、SumatraPDFがインストールされているフォルダを確認します。

メニューに”SumatraPDF”と入力して表示されたアイコン上で、右クリックします。

その他 > ファイルの場所を開く

出てきたショートカット上で右クリックします。

プロパティを選択します。

リンク先のパスをコピーします。

下のコマンドで印刷できます。

SumatoraPDFのパス\SumatraPDF.exe --print-to "printer name" print_file.pdf

プリンタ名は、設定からプリンターのキューからプロパティーを開いて一番上の名前です。

例えば、”Microsoft Print to PDF” などです。

Pythonからフォルダ内のPDFをまとめて印刷

PythonからSumatraPDFを使って印刷します。

フォルダ内のファイルをすべて取得して、SumatraPDFに渡します。

以下のコードのようなコードになります。

コード内の ”printer_name”と”sumatra_path”をご自分の環境に合わせて変更し得ください。

このコードをprint_pdfs.pyとして保存します。

import os
import sys
import subprocess

# プリンター名
printer_name = "Your_Printer_Name"
# SumatraPDFのパス
sumatra_path = r"Your_SumatraPDF_Folder_Path\SumatraPDF.exe" # SumatraPDF.exe のフルパスを指定

def print_all_pdfs(folder_path):
    # フォルダが存在するか確認
    if not os.path.isdir(folder_path):
        print(f"Error: {folder_path} does not exist.")
        return

    # フォルダ内のすべてのPDFファイルを取得
    # ファイル名を小文字にして比較 拡張子がpdfのファイルを取得
    pdf_files = [f for f in os.listdir(folder_path) if f.lower().endswith(".pdf")]
    if not pdf_files:
        print(f"No PDF files found in {folder_path}.")
        return

    # 各PDFファイルを印刷
    for pdf_file in pdf_files:
        pdf_path = os.path.join(folder_path, pdf_file)

        try:
            # SumatraPDFの印刷コマンドを実行
            subprocess.run([
                sumatra_path,
                "-print-to", printer_name,
                pdf_path
            ], check=True)
            print(f"Printed {pdf_path} successfully.")
        except subprocess.CalledProcessError as e:
            print(f"Failed to print {pdf_path}. Error: {e}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python print_pdfs.py <folder_path>")
    else:
        folder_path = sys.argv[1]
        print_all_pdfs(folder_path)

実行

コマンドプロンプトを開いて、以下のコマンドを実行します。

実行する場所は、LibreOfficeの作業をした場所です。このフォルダ内のPDFフォルダにPDFファイルが保存されています。

python print_pdfs.py .\pdf

これで、フォルダ内のPDFファイルがすべて印刷されます。

印刷のサイズの設定などは、SmatraPDFを起動して設定から行います。

まとめ

以上で、LibreOfficeを自動操作する仕組みの基本が少しお判りいただけたかと思います。

LibreOfficeを使いますと経費も少なくかなりのことが自動化できますので試してみてください。

それと、SumatraPDFも便利に使えますのでご活用ください。

以上で、このシリーズは終了です。

テストファイルのダウンロード

今回使ったファイルをzipに纏めました。

ダウンロードして、ご活用ください。

テストファイル ダウンロード

LibreOfficeを使って印刷物(PDF)を作る方法 1/4

LibreOfficeを使って印刷物(PDF)を作る方法 2/4

LibreOfficeを使って印刷物(PDF)を作る方法 3/4

LibreOfficeを使って印刷物(PDF)を作る方法 4/4

Commnts