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

hello,

I am trying to print a file on win2k, here is what I do:

1. create the file I want to print from the input of the user

2. call a batch file that does the following:

@echo off type file.dat > file1.dat type file.dat > LPT2

now I have tried all lpts and prn and I need it to be on lpt2 but I just can't get it to go, when the .bat file is executed...

the file copies just fine but for the print statements I get an: error access denied.

this is on a win2k server, I call system "batchfile.bat"; and use IIS

Frank

Edited: ~Sat Jul 13 16:10:32 2002
by footpad: Added <code> tags and fixed formatting.

Replies are listed 'Best First'.
Re: printing on win2k
by SuperCruncher (Pilgrim) on Jul 13, 2002 at 11:11 UTC
    A far nicer solution would be to use wxPerl. It is a GUI toolkit but also includes a very high-level printing framework. You can get a Win32 binary of wxPerl. wxPerl works a treat on Win2k.

    You can use the Wx::HTMLEasyPrinting class--it works by you specifying the document as HTML. It can accept either a filename or variable containing the HTML.

Re: printing on win2k
by Jim Morrison (Novice) on Jul 13, 2002 at 10:55 UTC
    In my opinion your way of doing things should work. Anyway, if it does not, I could suggest you slightly more complicated way, may be using Win32::API technology. See Formatting win32 printer output discussion on this, Courages comments could shed a light on this.

    As a side remark, I suggest you to use "copy /b file.dat lpt2" instead of "type ..." command, because it'll better process binary data.
    BTW what error win2k gets to you if you'll try my command from console window?

    Best wishes,
    Jim

Re: printing on win2k
by traveler (Parson) on Jul 13, 2002 at 15:59 UTC
    One possibility is that you need to have "LPT2:" instead of "LPT2". Also the first "type" could be a copy, couldn't it?

    Another option is to use the "replacement" for batch file scripting on W2k called "WSH" or Windows Scripting Host. It is a version of VB.

    Finally, since this is a perl forum after all, why not open LPT2: with perl and print there directly instead of having a batch file or WSH script. I have done this before with success on Windows.

    HTH, --traveler