Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

win32::printer help needed

by blenkhn (Acolyte)
on Apr 10, 2008 at 17:56 UTC ( #679541=perlquestion: print w/replies, xml ) Need Help??

blenkhn has asked for the wisdom of the Perl Monks concerning the following question:

I would like to use win32:printer to format a page for output on a dotmatrix printer. How does one set a custom papersize 7 inches tall by 8.5 inches wide.

Replies are listed 'Best First'.
Re: win32::printer help needed
by amarquis (Curate) on Apr 10, 2008 at 18:12 UTC

    Just from checking the docs it looks like:

    $dc->{xsize}; # X size in chosen units $dc->{ysize}; # Y size in chosen units

    Are the parameters you want. (And the default unit is inches).

    Also, I don't know if your size is a standard named size, but it seems like many of those are supported via the papersize attribute.

Re: win32::printer help needed
by BrowserUk (Patriarch) on Apr 10, 2008 at 23:36 UTC

    Maybe this will get you started.

    #! 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 dra +wing 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, CENTE +R ); } ## 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;

    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://679541]
Approved by amarquis
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (1)
As of 2022-10-03 01:06 GMT
Find Nodes?
    Voting Booth?
    My preferred way to holiday/vacation is:

    Results (13 votes). Check out past polls.