画像ファイルのPDF変換をリアルタイムで自動実行する。

監視フォルダーに投入された画像ファイルをPDFファイルに自動変換します。

  1. 画像ファイル JPG, PNG, GIF, Tiff をPDFファイルに変換します。
  2. Microsoft Print to PDF 仮想プリンター、PowerShell を利用しバッチファイルから実行します。
  3. 以下のコードをテキストエディタ(メモ帳など)にコピーし、例えば Image2PDF.bat のような名前で読み書き可能なフォルダーに保存します。ファイルの文字コードは ANSI を推奨します。
  4. 「クラウド対応自動印刷」で「設定」→「プリンター/処理」→「.Batchファイルを実行する」→「詳細」で保存したバッチファイル(Image2PDF.bat) を選択します。 → 参考サイト
  5. PDFファイルの出力フォルダーは同上の「出力フォルダー:」で指定します。

バッチファイルコード:

@echo off
setlocal enableextensions enabledelayedexpansion

rem 引数チェック
if "%~1"=="" (
  echo ERROR: 画像ファイルを指定してください。>> "%~2\error.log" 2>&1
  exit /b 1
)
if "%~2"=="" (
  echo ERROR: 出力フォルダーを指定してください。>> "%~2\error.log" 2>&1
  exit /b 1
)

rem 変数設定
set "img=%~1"
set "outdir=%~2"
set "pdf=%outdir%\%~n1.pdf"
set "errlog=%outdir%\error.log"

rem 出力フォルダー作成
if not exist "%outdir%" (
  mkdir "%outdir%" 2>>"%errlog%"
)

rem PowerShell で「Microsoft Print to PDF」印刷
powershell -NoProfile -Command ^
  "$imgPath='%img%';" ^
  "$pdfPath='%pdf%';" ^
  "Add-Type -AssemblyName System.Drawing;" ^
  "Add-Type -AssemblyName System.Drawing.Printing;" ^
  "$pd=New-Object System.Drawing.Printing.PrintDocument;" ^
  "$pd.PrinterSettings.PrinterName='Microsoft Print to PDF';" ^
  "$pd.PrinterSettings.PrintToFile=$true;" ^
  "$pd.PrinterSettings.PrintFileName=$pdfPath;" ^
  "$pd.add_PrintPage({param($sender,$e); " ^
  "$img=[System.Drawing.Image]::FromFile($imgPath);" ^
  "$e.Graphics.DrawImage($img,$e.PageBounds);});" ^
  "$pd.Print();" 2>>"%errlog%"

if errorlevel 1 (
  echo ERROR: PDF生成に失敗しました。>> "%errlog%"
  exit /b 1
)

echo PDFを出力しました: "%pdf%"
exit /b 0