#! perl -slw use strict; use Win32::Printer; use constant { WIDTH => 7, HEIGHT => 8.5, }; my $prn = new Win32::Printer( ## Page size in inches 7" wide, 8 1/2" high unit => 'in', width => WIDTH, height => HEIGHT, ) or die "$!, $^E"; ## Used to position the text vertically my $hieght = 0; ## For various different font sizes for my $fontsize ( 10 .. 30 ) { ## Select that font my $font = $prn->Font('Arial Bold', $fontsize ); ## CALCRECT return the hieght of the text to be drawn (without drawing it). ## CENTER the text horizontally between 0 and WIDTH (in units from above) $hieght += $prn->Write( 'Hello, world.', 0, $hieght, WIDTH, HEIGHT, CENTER | CALCRECT ); ## So use that to position the bottom left corner ## Then draw the text for real $prn->Write( 'Hello, world. ' . $fontsize, 0, $hieght, WIDTH, HEIGHT, CENTER ); } ## Start a second page $prn->Page; ## Draw a few rectangles to fit the paper $prn->Rect( $_, $_, WIDTH - ($_*2), HEIGHT - $_*2 ) for map{ $_ /2 } 0 .. WIDTH / 2; ## Steps of 1/2 inch ## Close and print it. print $prn->Close;