jpgを繋げてpdfを作ってみる。2

jpgを繋げてpdfを作ってみる。 - 永字八法の続き。
これを実行したディレクトリにあるzipの中のjpgを全部pdfにする。

use strict;
use warnings;
use Archive::Zip;
use PDF::API2;

opendir ( DIR, '.' );
my @zip = sort grep { /\.zip$/i } readdir ( DIR );
closedir ( DIR );

foreach my $zip_name ( @zip ) {

	print "$zip_name\n";

	# pdfファイル名を決定する。
	my $pdf_name = $zip_name;
	$pdf_name =~ s/zip$/pdf/i;

	# pdfファイルを作る。
	my $pdf = PDF::API2->new(-twocolumnright=>1);
	$pdf->mediabox("B5");

	# zipを読み込む。
	my $zip = Archive::Zip->new($zip_name);
	
	# zip内部のファイルリストを取得
	my @jpg = $zip->memberNames();
	
	# jpgのみを処理する。
	foreach my $jpg ( grep { /jpg$/ } @jpg ) {
		print "$jpg\n";
		my $out_jpg = "work\\".$jpg;
		# jpgを出力する。
		$zip->extractMember( $jpg, $out_jpg );

		# 出力したjpgをpdfに追加する。
		my $img = $pdf->image_jpeg($out_jpg);
		my $width = $img->width;
		my $height = $img->height;
	
		my $page = $pdf->page();
		my $w = $width * 709 / $height;
		
		my $gfx = $page->gfx;
		$gfx->image($img, ( 501 - $w ) / 2, 0, 709 / $height);
	}

	# pdfを保存する。
	$pdf->saveas($pdf_name);
}

できたー。