#acl SomeUser:read,write All:read = Lightweight Language Lovers = == pdf-merge.pl == オリジナルを# で残しています。 {{{#!cplusplus use PDF::API2; if(2 > scalar @ARGV) { print <<"EOT"; #Usage: $0 ... Usage: $0 ... merges serveral pdf files into on ;-) cheers, fredo EOT } my $outfile=shift @ARGV; my $pdf=PDF::API2->new; foreach my $in (@ARGV) { # insert (my $infile, my $page_from, my $page_to) = split /,/, $in; # print STDERR 'loading file $in .'; print STDERR "loading file $in ."; # my $inpdf=PDF::API2->open($in); my $inpdf=PDF::API2->open($infile); my $pages=scalar @{$inpdf->{pagestack}}; # foreach my $page (1..$pages) { foreach my $page ($page_from..$page_to) { print STDERR "$page."; $pdf->importpage($inpdf,$page); } $inpdf->end(); print STDERR " done.\n"; } $pdf->saveas($outfile); __END__ }}} ~- オリジナルのソースファイルは改行がDOS形式なのはいいとして、なぜか最終行だけ改行が入っていません。以下のワンライナーで変換しました。 {{{ perl -e '$/="\r\n";while (<>) {chomp;print "$_\n"}' pdf-merge.pl > pdf-merge2.pl }}} -~ オリジナルの28行目のforeach は、範囲が(1ページ~PDFファイルのページ数)になっていますが、これを、from~toで限定できるように変更しています。 from,to は入力ファイル名の後に続けて「,」で区切って指定することとし、22行目のsplit文で「入力ファイル名、from、to」に分離しています。 使用方法は以下のように、「切り出し後のPDFファイルの名前 切り出し元のPDFファイルの名前,開始ページ,終了ページ」の順で指定します。切り出し元ファイルは複数指定することも出来ます。 {{{ pdf-merge2.pl newpdf.pdf srcpdf.pdf,2,2 }}} ---- CategoryPerl GreatMotherPerl