PDFファイルの"結合"をリアルタイムで自動実行する。

ユーザー作成のバッチファイルを実行することで自動的にPDFファイルの結合を行います。

  1. 監視フォルダーへのPDFファイルの投入で既存のPDFファイルと自動的に結合します。
  2. PDFのフリーソフトで有名な pdftk.exe を使用します。https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ からダウンロードできます。
  3. GUIツールは使わずにコマンドラインツールである pdftk.exe を使います。
  4. pdftk.exe がインストールされており、PCの環境変数「PATH」に追加されている必要があります。(コマンドプロンプトで pdftk と入力してエンターを押し、pdftkの情報が表示されればOKです)
  5. 以下のコードをテキストエディタ(メモ帳など)にコピーし、例えば MergePDF.bat のような名前で読み書き可能なフォルダーに保存します。ファイルの文字コードは ANSI (Shift_JIS) を推奨します。
  6. 「クラウド対応自動印刷」で「設定」→「プリンター/処理」→「.Batchファイルを実行する」→「詳細」で保存したバッチファイル(MergePDF.bat) を選択します。 → 参考サイト

✅ バッチファイルコード

@echo off
setlocal enabledelayedexpansion

REM --------------------------------------------------------------------------
REM PDF結合バッチファイル
REM
REM 機能:
REM   - 指定されたPDFファイル(%1)を指定フォルダー(%2)にあるMerged.pdfに結合します。
REM   - Merged.pdfが存在しない場合は、最初のPDFをMerged.pdfとして移動します。
REM   - 処理中に発生したエラーは、指定フォルダー内のMergePDF.logに追記されます。
REM
REM 使い方:
REM   MergePDF.bat "C:\作業用\追加したい.pdf" "D:\保管先フォルダー"
REM --------------------------------------------------------------------------

REM --- 引数のチェック ---
if "%~1"=="" (
    echo [エラー] 結合元のPDFファイルを指定してください。
    echo 例: %~n0 "C:\source.pdf" "D:\destination"
    exit /b 1
)
if "%~2"=="" (
    echo [エラー] 結合先のフォルダーを指定してください。
    echo 例: %~n0 "C:\source.pdf" "D:\destination"
    exit /b 1
)

REM --- 変数の設定 ---
set "SOURCE_FILE=%~1"
set "DEST_FOLDER=%~2"
set "MERGED_FILE=%DEST_FOLDER%\Merged.pdf"
set "TEMP_FILE=%DEST_FOLDER%\temp_merged.pdf"
set "ERROR_LOG=%DEST_FOLDER%\%~n0.log"

REM --- pdftk.exe の存在確認 ---
where pdftk >nul 2>nul
if %errorlevel% neq 0 (
    echo %date% %time% - [ERROR] pdftk.exeが見つかりません。PATHが通っているか確認してください。 >> "%ERROR_LOG%"
    echo [エラー] pdftk.exeが見つかりません。PATHが通っているか確認してください。
    exit /b 1
)

REM --- 結合先フォルダーの存在確認 ---
if not exist "%DEST_FOLDER%" (
    echo %date% %time% - [ERROR] 結合先のフォルダーが存在しません: "%DEST_FOLDER%" >> "%ERROR_LOG%"
    echo [エラー] 結合先のフォルダーが存在しません: "%DEST_FOLDER%"
    exit /b 1
)

REM --- Merged.pdf の有無で処理を分岐 ---
if exist "%MERGED_FILE%" (
    REM ---【2回目以降】Merged.pdf に追加で結合する処理 ---
    echo %date% %time% - [INFO] 結合開始: "%MERGED_FILE%" + "%SOURCE_FILE%" >> "%ERROR_LOG%"
    
    rem pdftkで既存のMerged.pdfと新しいPDFを結合し、一時ファイルとして出力
    pdftk.exe "%MERGED_FILE%" "%SOURCE_FILE%" cat output "%TEMP_FILE%" 2>> "%ERROR_LOG%"
    
    rem 直前のコマンドが成功したか(errorlevelが0か)判定
    if !errorlevel! neq 0 (
        echo %date% %time% - [ERROR] PDFの結合に失敗しました。詳細はログを確認してください。 >> "%ERROR_LOG%"
        echo [エラー] PDFの結合に失敗しました。
        if exist "%TEMP_FILE%" del "%TEMP_FILE%"
        exit /b 1
    )
    
    rem 元のMerged.pdfを削除し、一時ファイルをリネーム
    del "%MERGED_FILE%"
    ren "%TEMP_FILE%" "Merged.pdf"
    
    echo %date% %time% - [SUCCESS] 結合が完了しました。 >> "%ERROR_LOG%"
    echo 結合が完了しました。

) else (
    REM ---【初回】指定されたPDFを Merged.pdf として移動する処理 ---
    echo %date% %time% - [INFO] 新規作成: "%SOURCE_FILE%" を "%MERGED_FILE%" として移動します。 >> "%ERROR_LOG%"
    
    rem %1のファイルを%2へMerged.pdfという名前で移動
    move "%SOURCE_FILE%" "%MERGED_FILE%" >nul 2>> "%ERROR_LOG%"
    
    rem 直前のコマンドが成功したか判定
    if !errorlevel! neq 0 (
        echo %date% %time% - [ERROR] ファイルの移動に失敗しました。詳細はログを確認してください。 >> "%ERROR_LOG%"
        echo [エラー] ファイルの移動に失敗しました。
        exit /b 1
    )

    echo %date% %time% - [SUCCESS] Merged.pdf を新規作成しました。 >> "%ERROR_LOG%"
    echo Merged.pdf を新規作成しました。
)

endlocal


  • スクリプトのテスト方法:

    コマンドプロンプトから実行します:

    MergePDF.bat "C:\Users\YourUser\Desktop\追加するPDF.pdf" "D:\Output"

    %1 には "C:\Users\YourUser\Desktop\追加するPDF.pdf" が入ります。
    %2 には "D:\Output" が入ります。

⚙️ 処理の流れ

  • 初回実行時: D:¥Outputフォルダーに Merged.pdf がない場合、追加するPDF.pdfD:\Output へ移動され、Merged.pdf という名前に変更されます。
  • 2回目以降の実行時: D:\Output フォルダーに Merged.pdf が既にある場合、新しく指定されたPDFファイルが既存の Merged.pdf の末尾に追加結合されます。
  • エラー発生時: 実行結果と何らかのエラー(ファイルの指定ミス、アクセス権限の問題など)が発生した場合、その内容が D:\Output\MergedPdf.log に日時とともに記録されます。