Right: as mentioned in a previous post, I've been trying to sort out our networked printers. We have an assortment of printers - some decent Canon iR networked machines, some half-decent networked HP machines, and lots of thoroughly crummy machines that take way to much time to sort out, are the bane of an IT technicians life, cost masses in ink to run - you know the drill.
Anyway, most of these are Windows-only machines - I can only find drivers for Windows (and some of those only for Windows XP). We also have an assortment of computers - the occasional older Windows machine, Windows XP, Linux (thin-client and otherwise), Macs. Pupils can bring their own assorted machines in to connect to our network (we're a private school, no LEA to get in the way).
I've set up a Windows machine as a print server. I had written my own print system based on having a copy of PDF Creator running locally and transferring PDF documents to the print server, which would then print them out. This proved fiddly - lots of tedious GUI code to write (although it did work over HTTP, so could be used easily off-site...). However, I've recently rediscovered Redmon , which allows me to redirect the input from a Windows printer port to a program. The idea is that you set up a generic Postscript printer driver to listen on a port, with that port redirected via Redmon to Ghostscript, a Postscript interpreter. This I can do okay, except I can't figure out what I'm meant to do after that. I can't seem to get Ghostscript to want to print to all our printers - it seems that they have to be compatible with its device list. Ghostscript can print to "a PCL printer" or "an HP laserjet", but I can't seem to get it to print to just any printer installed under Windows. This is a nuisance, as I want to be able to use all the features of a particular printer drive (we want to get our monies worth, dammit - we want to be able to set proper paper size options, colour profiles, the full works).
I'm currently using PDF format as an intermediate step - i.e. I redirect the printer port to a Perl script which takes the Postscript input, shoves it into a file, sends that to Ghostscript to produce a PDF, then prints out the PDf document using the Windows printing system to any printer I choose. This is handy to be able to do anyway as it means that I can record what each person prints if I want to, but I'd like to be able to skip a step and save some time.
Does anyone know how to get Ghostscript to print directly to a given Windows printer?
Also, while we're at it, does anyone know about (or have any handy utilities for...) extracting job information from a Postscript file? I'd like to be able to extract the originating computer name (or at leas the IP address) from each Postscript file sent so I can track print usage. Anyone know how?
We use PrintLimit Pro at our school. It's saved a LOT of money.
You can set the printers up into groups and assign them to classes via AD. You can refuse printing of certain documents by name, such as document1 etc. You can also prevent people from printing more than once in a certain period, so no triple-clicking the print button.
It also has lots of statistics and logs that you can peruse at your leisure.
You can set the printers up into groups and assign them to classes via AD.
Good plan, no Active Directory server :-)
We don't have much money, so I figure I'll make my own print system rather than buy one. This is actually looking like being quite simple when you know how - all I have to do is install a bunch of port-redirected generic Postscript printers on a Windows server and write a script to send the data sent to each one to the correct physical printer - that's two lines of Perl! It shouldn't take too long to figure out how to tell which user sent what, I was just wondering if anyone had already done this and if anyone knew how I could get Ghostscript to print straight to a physical printer so I could skip the create-a-PDF step.
What you are trying to do is actually similar to how CUPS works on *nix. You use a generic Windows driver to print to the printer shared on the CUPS print-server which then uses its own printer-driver to output to the printer. CUPS has a huge number of supported printers and it works really well.
If you then chuck PyKota into the mix, you will have print quota and accounting. Guides for all this are on the wiki and since it is all open source it should cost little or nothing to set up (other than time).
I use this setup in anger with 1300 users, 400 client machines and nearly 40 printers. I use a ropey old PIII server too!