Hi,
I am trying to print a canvas using the postscript method, but it's a really
big canvas
(not too wide, just high / long), and always comes out scaled to a single page.
Any easy
way to get the postscript method to make it a multi-page document, or should I
just start
hacking the resulting eps? I've tried playing with all the options to the
postscript method,
but haven't gotten anything to help.
Example code:
#!/usr/local/PERL_5.005_03/bin/perl -w
# written/testing on MSwin
######################################
use Tk;
use strict;
my $temp = "C:\\temp";
my $file="$temp\\psfile.ps";
chomp(my @files = `dir/b $temp\\psfile.* 2>&1`);
for (@files) {
next if /file not found/i;
if (-e "$temp\\$_") {
unlink "$temp\\$_";
}
}
my $cw=595; # 595.44 printer points A4
my $ch=841; # 841.68 printer points A4
my $mw= tkinit;
my $c = $mw->Scrolled('Canvas',
-scrollregion => [0,0,'596 p','842 p'],
)->pack(-expand => 1,
-fill => 'both',
);
# create "page size" box and text in each corner
$c->createRectangle(0,0,$cw.'p',$ch.'p',-outline=>'blue');
$c->createText(0,0, -text => 'nw', -anchor => 'nw');
$c->createText($cw.'p',0, -text => 'ne', -anchor => 'ne');
$c->createText($cw.'p',$ch.'p',-text => 'se', -anchor => 'se');
$c->createText( 0,$ch.'p',-text => 'sw', -anchor => 'sw');
# create numbers down the middle (3 "pages" worth)
for (my $i = 0; $i <= (3*$ch); $i += 72) {
$c->createText(($cw/2).'p',$i.'p',-text => $i);
}
my $b = $mw->Button(-text=>'output',-command=>\&ps)->pack;
MainLoop;
sub ps {
$c->postscript(
-colormode=> 'color',
-file=> $file,
-width=> $cw.'p',
-height=> (3*$ch).'p', # height of canvas to print
-x=> 0,
-y=> 0,
-pagex=> 0,
-pagey=> 0,
-pageanchor=> 'nw',
-pagewidth=> $cw.'p',
-pageheight=> (3*$ch).'p', # all 3 pages on single page
# -pageheight=> $ch.'p', # all 3 pages on single page
);
}
Thanks,
Cort