+ foreach my $page ( sort { $a <=> $b } @page_files ) {
+ my $image = Graphics::Magick->new;
+ if ( $page =~ m/\.pdf$/ ) {
+ my $cache_dir = "cache/$dir_url/$page/";
+ make_path $cache_dir;
+ warn "# pdfimages $path/$page -> $cache_dir";
+ system 'pdfimages', '-q', '-j', '-p', "$path/$page", $cache_dir;
+
+ # glob split on spaces!
+ opendir(my $dh, $cache_dir);
+ while (readdir($dh)) {
+ warn "## readdir = [$_]\n";
+ my $page = "$cache_dir/$_";
+ next unless -f $page; # skip . ..
+
+ if ( $page !~ m/\.jpg$/ ) {
+ warn "# convert to jpg";
+ system 'gm', 'convert', $page, $page . '.jpg';
+ unlink $page;
+ $page .= '.jpg';
+ }
+
+ warn "## ping $page\n";
+ die "$page: $!" unless -r $page;
+ my ( $w, $h, $size, $format ) = $image->ping($page);
+ warn "## image size $w*$h $size $format $page\n";
+ push @$pages, [ "/$page", $w, $h ] if $w && $h;
+ }
+ closedir $dh;
+
+ } else {
+ die "$path/$page: $!" unless -r "$path/$page";
+ my ( $w, $h, $size, $format ) = $image->ping("$path/$page");
+ warn "# image size $w*$h $size $format $path/$page\n";
+ push @$pages, [ "$dir_url/$page", $w, $h ] if $w && $h;
+ }
+ }