In a typical computing environment, before documents are sent to a printer for printing they are converted into a printer-ready format by a printer driver executing on a computer. For example, users generally work within an application program on a computer to generate or acquire a document or application file. The application program typically permits the user to view the document, manipulate its content, and print the document by selecting a print command. Selecting the print command cues the application program to initiate the print services of the operating system. The print services present a user interface in the form of a print dialog box that allows the user to select various print options prior to printing the document. When the user selects the print option within the print dialog, the application program uses a particular operating system API (application programming interface) to “draw” the document. The operating system collects the drawing commands and uses the printer driver to convert them to a PDL (page description language) format that is specific to the printer. The printer driver then directs the PDL to the printer where it is rendered as hardcopy output.
Although the above process is functional, there are several disadvantages associated with the printer driver. Most operating systems come with various types of printer drivers for the most common types of printers. When a particular driver is installed, the associated printer can be used. One problem is that each printer driver is closely associated with the operating system because the imaging system API used by an application to “draw” a document or application file is particular to the operating system. Therefore, a specific printer driver must be developed for each printer (or closely associated group of printers) to function with the various operating system platforms (e.g., Macintosh, Windows, Linux). Thus, a single printer requires the development of as many printer drivers as there are operating systems with which the printer must function. Costs associated with developing numerous printer drivers for each new printer are significant.
Another disadvantage related to the specific nature of printer drivers is their consumption of computing resources. Operating systems must include an ever-increasing number of printer drivers to accommodate the various types of printers. Maintaining the numerous printer drivers on a computer can consume valuable memory resources on the computer. In addition, executing printer drivers consumes valuable computer processing resources. Furthermore, if an operating system does not support or include a particular printer driver, the printer driver is typically available for downloading and installation from various locations on the Internet. However, this takes time, effort, and usually a little more know-how than an average user possesses.
Yet another disadvantage associated with operating system specific printer drivers is that they are typically activated by a print command from within an application program. Thus, in order for a user to print an application file associated with a particular application program, the application program must be installed on the user's computer. Therefore, users are not typically able to locate particular application files and generate a hardcopy documents if a copy of the associated application program used to create the application files is not resident on the user's computer.
Accordingly, the need exists for a way to print application files from computers that does not involve the use of operating system specific printer drivers installed on every computer.