psnupとghostscriptを繋げただけ。
「pdfnup.bat」
@echo off @setlocal enabledelayedexpansion if {%1}=={} goto USAGE if {%1}=={/?} goto USAGE if {%1}=={-h} goto USAGE if {%1}=={--help} goto USAGE set o=%* set count=1 set in_pdf=%1% set out_pdf=%2% :LOOP set in_ext=!in_pdf:~-4,4! set out_ext=!out_pdf:~-4,4! if ""%2%""=="""" ( if /i "%in_ext%"==".pdf" ( goto NEXT ) else ( if /i "%out_ext%"==".pdf" ( set in_pdf=%out_pdf% rem set out_pdf=nup-!in_pdf! set out_pdf= set str_inout= !in_pdf! goto NEXT ) else ( goto USAGE ) ) ) set in_pdf=%1% set out_pdf=%2% set str_inout= %in_pdf% %out_pdf% set /a count+=1 shift goto LOOP :NEXT echo Input PDF: %in_pdf% 1>&2 if ""%out_pdf%""=="""" ( echo Output PDF: 標準出力 1>&2 ) else ( echo Output PDF: %out_pdf% 1>&2 ) set strlen=0 if "%str_inout%"=="" goto USAGE :LEN_LOOP call set ch=%%str_inout:~%strlen%,1%% if "%ch%" == "" goto LEN_END set /a strlen+=1 goto LEN_LOOP :LEN_END set options= !o:~0,-%strlen%! set options=%options: .=.% rem 「-W19.19cm」のようなオプションが「-W19 .19cm」とされないようにする rem 「-W .19cm」は「-W.19cm」となってもよい echo Options (for psnup): %options% 1>&2 set psfile=%temp%\%RANDOM%.ps if not ""%out_pdf%""=="""" set out_pdf=^>!out_pdf! cd /d %~dp0 rungs.exe -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE=ps2write -sOutputFile=%psfile% %in_pdf% psnup %options% %psfile%|rungs.exe -dEPSCrop -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE="pdfwrite" -sOutputFile=- -c save pop -%out_pdf% del %psfile% goto :EOF :USAGE echo Usage: echo pdfnup [-W -H/-P] [-w -h/-p] [-l/-r/-f/-c] [-mmargin] [-bborder] [-dlwidth] [-sscale] [-nup] [-q] [infile [outfile]] echo. echo 例: pdfnup -4 infile.pdf outfile.pdf (1ページに4面割付) echo 例: pdfnup -4 infile.pdf >outfile.pdf (1ページに4面割付) echo. echo infileは拡張子「.pdf」を持つ必要があり、outfileの指定が省略された場合は出力は標準出力。オプションはほぼpsnupのオプションと同様: echo. echo -nup : 1枚当たりnupページ出力。in/outともA4縦長と見て適切に配置される。 echo. echo 並べ方 echo -l : 入力ファイルをA4横長と見て適切に配置。 echo -r : ページ順序を逆転して通常配置。 echo -c : 「転置行列」 echo -f : 各ページの縦横サイズを逆にする。 echo. echo ページ間 echo -bborder : 各ページ間に距離borderをとる。 echo -dlwidth : 各ページ間に太さlwidthの区切り線をいれる。 echo. echo 用紙サイズ echo -P/-p : 入力/出力ファイルの用紙サイズ (a3/a4/a5/b5/letter/legal/tabloid/statement/executive/folio/quarto/10x14) echo -H/-h : 入力/出力ファイルの高さ (cm,in) echo -W/-w : 入力/出力ファイルの幅 (cm,in) echo. echo -s : スケールを(自動スケールでなく)scaleにする。 echo -q : ページ番号を振り直さない。 echo.
使い方
pdfnup [-W -H/-P] [-w -h/-p] [-l/-r/-f/-c] [-mmargin] [-bborder] [-dlwidth] [-sscale] [-nup] [-q] [infile [outfile]] 例: pdfnup -4 infile.pdf outfile.pdf (1ページに4面割付) infileは拡張子「.pdf」を持つ必要があり、outfileの指定が省略された場合は出力は標準出力。オプションはほぼpsnupのオプションと同様: -nup : 1枚当たりnupページ出力。in/outともA4縦長と見て適切に配置される。 並べ方 -l : 入力ファイルをA4横長と見て適切に配置。 -r : ページ順序を逆転して通常配置。 -c : 「転置行列」 -f : 各ページの縦横サイズを逆にする。 ページ間 -bborder : 各ページ間に距離borderをとる。 -dlwidth : 各ページ間に太さlwidthの区切り線をいれる。 用紙サイズ -P/-p : 入力/出力ファイルの用紙サイズ (a3/a4/a5/b5/letter/legal/tabloid/statement/executive/folio/quarto/10x14) -H/-h : 入力/出力ファイルの高さ (cm,in) -W/-w : 入力/出力ファイルの幅 (cm,in) -s : スケールを(自動スケールでなく)scaleにする。 -q : ページ番号を振り直さない。