#!/usr/bin/perl -w use strict; use File::Basename; use PDF::API2; use YAML; my $infile = $ARGV[0]; die "Please specify PDF to examine!\n" unless defined $infile; die "Could not open $infile!\n" unless -r $infile; my $outfile = basename($infile) . ".stitch"; die "$outfile exists, aborting!\n" if -e $outfile; print 'Creating metafile for '.$infile."...\n"; my $pdf = PDF::API2->open($infile); my $page = $pdf->openpage(1); my ($llx, $lly, $urx, $ury) = $page->get_mediabox; my $meta = { input => basename($infile), x => (($urx - $llx)*0.1)/2, y => (($ury - $lly)*0.1)/2, width => ($urx - $llx)*0.9, height => ($ury - $lly)*0.9, columns => int(sqrt($pdf->pages)), rows => int(sqrt($pdf->pages)), pageorder => [(1 .. $pdf->pages)], }; foreach $page (1..$pdf->pages) { $meta->{pageoffsets}->{$page}->{x} = 0; $meta->{pageoffsets}->{$page}->{y} = 0; } YAML::Bless($meta)->keys(['input','x','y','width','height','columns','rows', 'pageorder','pageoffsets']); YAML::DumpFile($outfile,$meta);