/[flash]/openlayers/pdf2tiles.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /openlayers/pdf2tiles.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 19 by dpavlin, Sun Feb 24 21:01:20 2008 UTC revision 20 by dpavlin, Sun Feb 24 21:24:39 2008 UTC
# Line 12  use Data::Dump qw/dump/; Line 12  use Data::Dump qw/dump/;
12    
13  my $pdf = shift @ARGV || die "usage: $0 filename.pdf";  my $pdf = shift @ARGV || die "usage: $0 filename.pdf";
14    
15  my $limit = '';  my $from_page   = 1;
16  $limit = '-f 1 -l 1';  my $to_page             = 4;
17    
18  my $tiles_path = 'tiles/basic';  my $tiles_path = 'tiles/basic';
19  rmtree $tiles_path if -d $tiles_path;  
20  mkpath $tiles_path || die "can't create $tiles_path: $!";  foreach my $path ( $tiles_path, 'ppm' ) {
21            rmtree $path if -d $path;
22            mkpath $path || die "can't create $path: $!";
23    }
24    
25  foreach my $zoom ( 1 .. 12 ) {  foreach my $zoom ( 1 .. 12 ) {
26    
27          my $dpi = $zoom * 15;          my $dpi = $zoom * 15;
28    
29          my $ppm = sprintf("tmp-%03d", $dpi);          my $ppm = sprintf("ppm/%03d", $dpi);
30          my $tmp = "$ppm-000001.ppm";  
31            print "rendering pdf $pdf pages $from_page-$to_page in $dpi dpi\n";
32    
33            my $cmd = "pdftoppm -f $from_page -l $to_page -r $dpi -aa yes -aaVector yes $pdf $ppm";
34            system($cmd) == 0 or die "can't start $cmd: $?";
35    
36            my @page_imgs;
37    
38            # size of all pages
39            my ( $x_size, $y_size ) = (0,0);
40    
41            foreach my $page ( $from_page .. $to_page ) {
42    
43                    my $tmp = sprintf("ppm/%03d-%06d.ppm", $dpi, $page);
44                    die "can't find page $tmp" unless -f $tmp;
45    
46                    my $img = Imager->new;
47                    $img->read(file=>$tmp) or die "Can't load $tmp: ", $img->errstr;
48    
49                    $x_size += $img->getwidth();
50                    my $h = $img->getheight();
51                    $y_size = $h if $h > $y_size;
52    
53                    push @page_imgs, $img;
54            }
55    
56          print "rendering pdf $pdf in $dpi dpi to $tmp\n";          print "loaded $from_page-$to_page of $x_size*$y_size pixels\n";
57    
58          system "pdftoppm $limit -r $dpi -aa yes -aaVector yes $pdf $ppm";          my $back_color = Imager::Color->new(255, 127, 127);
59    
60          die "can't render" unless -f $tmp;          my $img = Imager->new( xsize => $x_size, ysize => $y_size );
61            $img->box(filled=>1, color=>$back_color);
62    
63          my $img = Imager->new;          my $x_pos = 0;
         $img->read(file=>$tmp) or die "Can't load $tmp: ", $img->errstr;  
64    
65          my $x_size = $img->getwidth();          foreach my $page_img ( @page_imgs ) {
66          my $y_size = $img->getheight();                  $img->paste( left => $x_pos, top => 0, img => $page_img );
67                    $x_pos += $page_img->getwidth();
68            }
69    
70          print "loaded $tmp $x_size*$y_size pixels\n";          undef @page_imgs;
71    
72          my $tiles_x = int( $x_size / 256 );          my $tiles_x = int( $x_size / 256 );
73          my $tiles_y = int( $y_size / 256 );          my $tiles_y = int( $y_size / 256 );

Legend:
Removed from v.19  
changed lines
  Added in v.20

  ViewVC Help
Powered by ViewVC 1.1.26