hatop.de hatop.de

Printstation Printing


Using a PrintStation
PrintStation printing is a two step process:
  • Send your print job to a PrintServer.
  • Go to a PrintStation, choose your print job from a list of available jobs and print it out.
Such a setup is probably useful for sharing a printer among plenty of workstations where for some reason you dont want the printer to print out directly what it receives. holdq/qprint is a cups based solution to this.
The curses based front end runs with very low resources so that you can use any old pc-hardware with a minimum linux installation to run the program.



Comments welcome: use the mail form from this site and write "[qprint]" into the subject line.

Details
holdq/qprint consists of two parts:
  • a "copy and hold"-backend for cups which sets the "hold" attribute to a printjob.
  • A curses based frontend (qprint) which can be used to select an available printjob from a list and print it to a physically attached printer. qprint runs with very low resource demands, such that it is possible to use some old hardware as a PrintStation.

-----
|PC |  --- send print jobs.
-----     \   
           \ 
----        \      ----------
|PC |  ------  --> | PServer | store print jobs.
-----       /      ----------
           /                  \  request print job and print them out.
          /                    \ 
-----    /                      \-----------
|PC |  --                       | Pstation | ---> RealPrinter
-----                            -----------


Download and Install
First of all: No warranty at all.
You need cdk (curses development toolkit) You need cups. And the cups libs to compile qprint.
Install hardware printer as usual.
For the Printstation:
  • copy qprint to /usr/local/bin (or where you like it)
  • and make an inittab entry 2:3:respawn:/usr/bin/openvt -s -w /usr/local/bin/qprint
the curses based frontend (qprint) will be started on boot. You dont need X.


For the Printserver: type
   make
   make install-server
This will compile hold.c and put it to /usr/lib/cups/backend/hold

Configure
Cups must be enabled for raw printing. See /etc/cups/mime.convs and /etc/cups/mime.types for details.
Configuring printers.conf goes like this:
* Printclient /etc/cups/printers.conf:
  (set up with your Printserver DNS name) 

  <DefaultPrinter public0>
  Info public0
  DeviceURI ipp://Printserver.your.domain/printers/hold
  State Idle
  Accepting Yes
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  </Printer>
* Printserver /etc/cups/printers.conf:

  <Printer hold>
  Info wait queue
  DeviceURI hold://hold://localhost/rq=holdq
  State Idle
  Accepting Yes
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  </Printer>

  <Printer holdq>
  Info wait queue
  DeviceURI file:/var/tmp/holdq
  State Idle
  Accepting Yes
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  </Printer>

  <Printer PrintStation.your.domain>
  Info hardware print server
  DeviceURI ipp://PrintStation.your.domain/printers/local
  State Idle
  Accepting Yes
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  </Printer>
* PrintStation /etc/cups/printers.conf:
  <Printer local>
  Info Printing Hardware
  Location UB Marburg
  DeviceURI parallel:/dev/lp0
  State Idle
  Accepting Yes
  JobSheets none none
  QuotaPeriod 0
  PageLimit 0
  KLimit 0
  </Printer>>

Please contact the Author if you are interested.