postnote
@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