Friday, May 11, 2007

Toshiba ESTUDIO 120 (Windows GDI) under BSD/UNIX (LPR)

As you may already know, there are a lot of "Windows Printers" out there. These printers by their very definition are designed solely for Microsoft's ubiquitous operating system..

As with most things of this ilk, there's usually some work around / port / open source solution, and so is the case when wishing to print to a Toshiba ESTUDIO 120 from (in my case) a FreeBSD 6.2 box.

Without wanting to get buried in the intricacies of why this printer (and others) can only be printed to via a Windows machine I'll give a brief overview:-

A "Windows Printer" has reduced hardware as it only expects to recieve its data in one format (GDI), since this format is a graphical format (GDI = Graphics Device Interface) then the printer effectively receives the image data pre-rendered by the Windows GDI subsystem. Due to this, the printer takes the data (a bitmap) and just prints it without any formatting or parsing.

As you'd expect these printers are cheaper, but not multi-platform friendly!!

If the GDI standard was open source, or even properly documented / licensed then suitable drivers could be written natively for *nix, however this is not the case (nice one Microsoft), so let us proceed!

(Thankfully these GDI/Windows printers are now being phased out in favour of a new emerging format similair in method to Postscript called XPS.)


Anyway, back to the point. Here's how to get your Toshiba ESTUDIO 120 / Windows printer working from a BSD/unix box.

You will need:-
  • A Windows machine (acting as a print server with a shared printer (SMB/etc.))
  • Some software which will take a Postscript input and produce a GDI output.
  • A pseudo printer port (think virtual LPT:) which will pass the incoming Postscript to the above said software.
In a nutshell, you print Postscript from the unix box to an SMB/etc. shared Windows virtual printer, the virtual printer (software) parses the postscript via external utils and renders this as graphics (GDI). This is then sent to the real printer port through the Windows spooler and bingo, you've just killed some trees.

For the virtual LPT port and Postscript "middleman" functionality you will need Redmon. For the Postscript processing/parsing/rendering you will need Ghostscript
and GSView. All of which are installed on the Windows print server machine.

For a more practical implementation (step by step) guide, see this excellent site:-
http://mywebpages.comcast.net/heretrythis/hp3100/psemunt.html