I don't know what the "postscript module" is, and I find it hard to believe that a groups.google.com search didn't return anything for "perl tk canvas save" . Try it. You have 2 choices. The first is the postscript method, which has the useful trick of getting a whole scrolled canvas
#!/usr/bin/perl
use Tk;
#to change the background color, edit the ps file
# 0.000 0.000 0.000 setrgbcolor AdjustColor
# fill
$width = 800;
$height = 500;
my $main = MainWindow->new();
my $canvas = $main->Canvas( -width=>$width, -height=>$height, -backgro
+und=>"black");
$canvas->pack( -expand=>1,-fill=>'both');
&create;
$canvas->update;
$main->update;
$main->Button(
-text => "Save",
-command => [sub {
$canvas->update;
my @capture=();
my ($x0,$y0,$x1,$y1)=$canvas->bbox('all');
@capture=('-x'=>$x0,'-y'=>$y0,-height=>$y1-$y0,-width=>$x1-$x
+0);
$canvas -> postscript(-colormode=>'color',
-file=>$0.'.ps',
-rotate=>0,
-width=>800,
-height=>500,
@capture);
}
] )->pack;
MainLoop;
sub create{
$canvas->createOval(100, 100, 600, 600,-fill=>'green')
}
The second method, is Tk::WinPhoto, which is only available
on linux, and captures only the visible canvas region to a gif, jpg, or png file. See the groups.google.com search above.
To actually print, you need to send it to the printer yourself
# on linux, and you might want to fork it off so it
# dosn't block your program
system("lpr -P lp0 mypsfile.ps"); # lp1, lp2, etc
|