@echo off
chcp 932
rem bakファイル名連番の為、setlocalを使用する
setlocal enabledelayedexpansion
rem --- 設定項目 (ここを編集して使用します) ---
REM cpdf.exe のフルパス
set CPDF_PATH=C:\pdftool\cpdf.exe
REM 印鑑枠PDF のフルパス
set BETA_PATH=C:\pdftool\inkan3.pdf
REM 使用するTrueTypeフォントファイル(.ttf)
rem TTCは動かない
REM ◆HGRSMP.TTFは丸ゴシック(windows自前)
REM set FONT_FILE=C:\Windows\Fonts\HGRSMP.TTF
REM ◆NotoSansJP-Regular.ttfはゴシック
REM set FONT_FILE=C:\pdftool\NotoSansJP-Regular.ttf
REM ◆NotoSerifJP-Regular.ttfは明朝
set FONT_FILE=C:\pdftool\NotoSerifJP-Regular.ttf
REM 名前
set NAME_TEXT="ガマ"
REM 会社名
set NAME_TEXT2="桃太郎印鑑"
REM 文字色 (例: "black", "red", "0 0 0" (RGB黒), "1 0 0" (RGB赤))
set TEXT_COLOR=red
REM --- 設定項目ここまで ---
REM フォントサイズ (ポイント単位)
set FONT_SIZE1=9.5
set FONT_SIZE2=9.5
set FONT_SIZE3=7
REM 日付
set ten=.
set kan='
set yq=%date:~-8,2%
set yy=%yq%
set mm=%date:~-5,2%
set dd=%date:~-2,2%
set aaa=%kan%%yy%%ten%%mm%%ten%%dd%
REM ファイルがドロップされたかチェック
if "%~1"=="" (
echo PDFファイルをこのバッチファイルにドラッグ&ドロップしてください。
goto :eof_with_pause
)
rem --- メイン処理 ---
rem --- ここから変更 ---
echo.
set /p LOOP_COUNT="追加する印鑑の数を入力してください (半角数字): "
rem 入力が無効な場合は1回だけ実行する
if not defined LOOP_COUNT set LOOP_COUNT=1
set /a "CHECK_NUM=!LOOP_COUNT!" 2>nul
if !CHECK_NUM! equ 0 set LOOP_COUNT=1
rem --- ここまで変更 ---
REM 連番でのバックアップ作成
set "BACKUP_FILE=%~dpn1_bak.pdf"
if not exist "%BACKUP_FILE%" (
copy "%~1" "%BACKUP_FILE%"
set "BACKUP_INFO=%~n1_bak.pdf"
) else (
set /a i=2
:loop
set "BACKUP_FILE=%~dpn1_bak!i!.pdf"
if exist "!BACKUP_FILE!" (
set /a i+=1
goto :loop
)
copy "%~1" "!BACKUP_FILE!"
set "BACKUP_INFO=%~n1_bak!i!.pdf"
)
REM ループ処理専用の「処理中ファイル」を作成
set "PROCESSING_FILE=%~dpn1_processing%~x1"
copy "%~1" "!PROCESSING_FILE!" > nul
echo.
echo これから !LOOP_COUNT! 個の印鑑を追加します...
echo.
REM メインループ
for /L %%i in (1, 1, !LOOP_COUNT!) do (
echo --- [%%i / !LOOP_COUNT! 個目] の処理を開始 ---
call :ProcessOneStamp "!PROCESSING_FILE!"
echo.
)
REM 最終的に出来上がった「処理中ファイル」を元のファイル名に戻す
move /Y "!PROCESSING_FILE!" "%~1" > nul
echo 全ての処理が完了しました。
goto :cleanup
:ProcessOneStamp
REM --- 変数の設定 ---
set "CURRENT_INPUT_PDF=%~1"
set "OUTPUT_PDF_IN_SUB=%~1"
REM 印鑑 の左下からの距離
rem X:0〜548 Y:0〜795 A4縦の設定値
set /a "WAKU_X = !RANDOM! %% 549"
set /a "WAKU_Y = !RANDOM! %% 796"
echo ランダム座標 ^(X, Y^) = (!WAKU_X!, !WAKU_Y!)
REM 印鑑 の左下からの距離(指定用文字)
set WAKU_XY="!WAKU_X! !WAKU_Y!"
REM オフセット値の計算
set /a "NAME_X = !WAKU_X! + 15"
set /a "NAME_Y = !WAKU_Y! + 6"
set OFFSET_XY1="!NAME_X! !NAME_Y!"
set /a "DATE_X = !WAKU_X! + 4"
set /a "DATE_Y = !WAKU_Y! + 20"
set OFFSET_XY2="!DATE_X! !DATE_Y!"
set /a "KAISHA_X = !WAKU_X! + 6"
set /a "KAISHA_Y = !WAKU_Y! + 34"
set OFFSET_XY3="!KAISHA_X! !KAISHA_Y!"
REM サブルーチン内で変数を再定義する
set "TEXT_TO_ADD= %NAME_TEXT%"
set "TEXT_TO_ADD2= %NAME_TEXT2%"
REM --- cpdfコマンドの実行 ---
set "TEMP_OUTPUT_PDF=%~dpn1_temp1%~x1"
set "TEMP_OUTPUT2_PDF=%~dpn1_temp2%~x1"
rem 空白文字(角度設定反映用)いれます
"%CPDF_PATH%" -load-ttf A="!FONT_FILE!" -font A -bottomright !OFFSET_XY1! -font-size !FONT_SIZE1! -color "!TEXT_COLOR!" -prerotate -add-text " " "!CURRENT_INPUT_PDF!" -o "!TEMP_OUTPUT_PDF!"
rem 日付印の枠を入れます
"%CPDF_PATH%" -stamp-on "!BETA_PATH!" -bottomright !WAKU_XY! -prerotate "!TEMP_OUTPUT_PDF!" -o "!TEMP_OUTPUT2_PDF!"
rem 日付を入れます
"%CPDF_PATH%" -load-ttf A="!FONT_FILE!" -font A -bottomright !OFFSET_XY2! -font-size !FONT_SIZE2! -color "!TEXT_COLOR!" -prerotate -add-text "!aaa!" "!TEMP_OUTPUT2_PDF!" -o "!TEMP_OUTPUT_PDF!"
rem 会社名を入ります
"%CPDF_PATH%" -load-ttf A="!FONT_FILE!" -font A -bottomright !OFFSET_XY3! -font-size !FONT_SIZE3! -color "!TEXT_COLOR!" -prerotate -add-text "!TEXT_TO_ADD2!" "!TEMP_OUTPUT_PDF!" -o "!TEMP_OUTPUT2_PDF!"
rem 名前を入れます
"%CPDF_PATH%" -load-ttf A="!FONT_FILE!" -font A -bottomright !OFFSET_XY1! -font-size !FONT_SIZE1! -color "!TEXT_COLOR!" -prerotate -add-text "!TEXT_TO_ADD!" "!TEMP_OUTPUT2_PDF!" -o "!TEMP_OUTPUT_PDF!"
REM エラーチェック
if errorlevel 1 (
echo Error: PDFの処理中にエラーが発生しました。
goto :eof_with_pause
)
REM 正常終了した場合、一時ファイルを「処理中ファイル」に上書きして結果を引き継ぐ
if exist "!TEMP_OUTPUT_PDF!" (
move /Y "!TEMP_OUTPUT_PDF!" "!OUTPUT_PDF_IN_SUB!" > nul
echo 処理完了。
) else (
echo Error: 出力PDFファイルが作成されませんでした。
)
goto :eof
:cleanup
rem --- ここから変更 ---
rem 正しい名前の一時ファイルを削除する
if exist "%~dpn1_processing%~x1" del "%~dpn1_processing%~x1"
if exist "%~dpn1_processing_temp1%~x1" del "%~dpn1_processing_temp1%~x1"
if exist "%~dpn1_processing_temp2%~x1" del "%~dpn1_processing_temp2%~x1"
rem --- ここまで変更 ---
:eof_with_pause
pause