From Moonlight Design
Jump to navigation Jump to search
The LPD Printer System's configuration dialog box, which configures printer queues for the underlying LPD server and the PCL interpreter's settings
The data flow architecture diagram of how the LPD Printer System for Win95 gets data to the printer

The LPD Printer System for Win95 is a Win32 extension of the University of Valencia student Agustin Lopez Bueno's Win16 LPD Server program. This extension added support for Windows 95 printing by rendering Hewlett Packard printer command language (PCL) input onto a printer graphics device interface (GDI) context, permitting LPD clients to print to any arbitrary destination printer that has a Win32 driver. I wrote this extension to effectively save the Grapevine-Colleyville Independent School District (GCISD) thousands of dollars in their Windows 95 upgrade as this program eliminated the need to license WallData Rumba for AS/400 printer support. IBM's Client Access/400 for Windows 95 provided terminal access, but not local printer access. The GCISD widely deployed PCL Page in its administrative offices for AS/400-to-PC printing.

This print system extends the original Win16 program by using Windows's hook API to override the "Setup" button to invoke my Win32-based configuration program, which configures the LPD server to hand off incoming print jobs to pasprn32.exe. My pasprn32.exe program performed the PCL interpretation and printer GDI context printing. Interestingly, this strategy uncovered a difference between Windows 95 and Windows NT. In Windows NT and higher, the "Setup" button hook successfully launches my configuration program, but it fails to stop the LPD server from displaying its own configuration dialog box, which was properly suppressed in Windows 95.

With logging, it's possible to keep track of the print jobs to quickly diagnose any problems that might arise with LPD printing. At the user's option, word wrapping may be enabled or disabled, among other options.

This system supports up to twenty printer queues on one computer, permitting customization of font and print settings for different programs on a AS/400 or UNIX host without having to manually switch between settings on the client for different types of print jobs. It's also possible to have one computer running this system handle printing for up to twenty different printers that are either physically attached or on another computer across the network.

Because some of the components of this program were created while I was employed at the Grapevine-Colleyville ISD and the original program is restricted for academic and educational use only, I cannot redistribute this program without permission. Fortunately, free alternatives exist in the marketplace.

The underlying Win16-based LPD server, which was written by University of Valencia student Agustin Lopez Bueno. I extended it using Windows's hook API