Re: Client/Server Printing

From: Date: Tue, 20 Jan 2009 20:10:13 +0000
Subject: Re: Client/Server Printing
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-286885@lists.php.net to get a copy of this message
On Jan 20, 2009, at 9:16 AM, Paul M Foster wrote:
I'd like a side check on what I'm doing to print on our internal network. We have an internal server/site which uses PHP code I've written to "run" the business-- invoicing, A/P, inventory, etc. Some things, like invoices and reports, need to be printed. Now remember, the code is on the server, and we access it from our client machines on our desks. When we print, we do so to our local printers, attached to the client machines. So the best way I could think of to making printing work was to generate PDFs of whatever needs to be printed, dump the PDF on the server, and provide a link to the PDF on the web page. The user clicks on the generated PDF, and his/her browser opens up Acrobat or xpdf, and prints from that application to their local machine. Is that a reasonable way to implement this? Any better ideas? Paul
We've addressed this issue in two ways. Originally our application was locally hosted. The solution for us was: <?php if ($windows) {
    exec ("psexec.exe -d -i -w ". escapeshellarg($filepath) ." -u $user -p ". escapeshellcmd ($pass) . " -e gswin32c.exe -q -dNOPAUSE -dNOPROMPT -dQUIET -dBATCH -dNumCopies=$copies -sDEVICE=msinwpr2 -sOutputFile=\"\\\\spool\\$printerShare\" \"$pdfFilepath\" 2>&1");
} else {
    exec ("/usr/bin/lpr -# $copies -P ". escapeshellarg($printerShare) ." \"$pdfFilepath\" 2>&1");
} ?> The Windows version uses psexec to call ghostscript. So you do have to use third-party utilities for Windows (but they are small). However, if on *nix, then you can use the built in lpr. Of course, just put that code in a function that is called when clicked on a link to print. http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx http://www.ghostscript.com/ Our online solution uses a third-party utility for printing (Cloverleaf/Secure Courier). Essentially we have a (print) server and each of our clients have a client-version that connects to the print server. In our application, we use sockets to send print jobs to the server. The server then divvies out the print jobs to the specific client id specified in the data sent through the socket. However, since all your servers/clients are local, the first option may be more realistic. Hope that helps, ~Philip

« previous php.general (#286885) next »