BACKGROUNDPrint paths that are employed by systems such as Microsoft Windows provided by Microsoft Corporation of Redmond, Wash. are usually statically defined. Static print paths associate a system or network printer with a computer system or other physical device. To print to a system or network printer, a computer system employs a printer specific print driver to render a document into a printer ready file that is compatible with the specified printer. The printer ready file is then provided to a port monitor that is responsible for transmitting the data contained therein to the specified printer. The print path is statically defined in that the printer driver and the port monitor are both predefined for printing to a specific printer.[0001]
Statically defined print paths can be burdensome when a user wishes to print to a new printer that is undefined in their computer system. Specifically, in order to print to an undefined printer, a user is required to construct the print path to the new printer identifying the new printer driver, port monitor, and other aspects.[0002]
SUMMARYIn light of the foregoing, various embodiments including systems, methods, and programs embodied in a computer readable medium for printing using a dynamic print path are provided. In one embodiment, a method is provided that comprises the steps of rendering a document in a computer system into a print ready file without a specification of a destination printer upon which the document is to be printed, specifying the destination printer to which the print ready file is to be transmitted to print the document, and, transmitting the print ready file from the computer system directly to the destination printer using a predefined communications protocol.[0003]
In another embodiment, a program embodied in a computer readable medium is provided that comprises a generic printer driver that renders a document into a print ready file without a specification of a destination printer upon which the document is to be printed. The program also includes a port monitor that writes the print ready file rendered by the generic printer driver to a memory to be transmitted to the destination printer. The program further comprises a print router that facilitates specifying the destination printer from a number of potential destination printers to which the print ready file is to be transmitted to print the document and the print router being capable of directing a data communications protocol suite to transmit the print ready file directly to the destination printer for printing.[0004]
In still another embodiment, a system that provides for a dynamic print path with which to interface with a destination printer to print a document is described. In this regard, the system comprises a processor circuit having a processor and a memory. In addition, a dynamic print path is stored in the memory and is executable by the processor. The dynamic print path comprises a generic printer driver that renders a document into a print ready file without a specification of a destination printer upon which the document is to be printed, a port monitor that writes the print ready file rendered by the generic printer driver to a memory to be transmitted to the destination printer, and, a print router that facilitates specifying the destination printer from a number of potential destination printers to which the print ready file is to be transmitted to print the document.[0005]
In addition the present invention provides for other embodiments that are described in the discussion below and/or in the claims appended hereto.[0006]
BRIEF DESCRIPTION OF THE DRAWINGSThe invention can be understood with reference to the following drawings. The components in the drawings are not necessarily to scale. Also, in the drawings, like reference numerals designate corresponding parts throughout the several views.[0007]
FIG. 1 is a functional block diagram of a dynamic print path according to an embodiment of the present invention;[0008]
FIG. 2 is a block diagram of a network that includes a computer system that employs the dynamic print path of FIG. 1;[0009]
FIG. 3 is a functional block diagram that shows a data communication protocol suite employed to facilitate communication between a computer system and a printer in the network of FIG. 2;[0010]
FIG. 4 is a drawing of a user interface generated by a print router employed in the computer system of FIG. 2 to specify a printer for printing; and[0011]
FIG. 5 is a flow chart that depicts the functionality of the print router employed in FIGS.[0012]1 or2.
DETAILED DESCRIPTIONTurning to FIG. 1, shown is a functional block diagram of a[0013]print network100 that includes various components to perform a print operation according to an embodiment of the present invention. In this respect, theprint network100 includes acomputer system103 with adynamic print path106. Thecomputer system103 may be, for example, a computer, personal digital assistant, or other device with like capability. Thecomputer system103 is in data communication with adestination printer109. Thecomputer system103 includes anapplication113 that generates one ormore documents116. For printing, thedocument116 is applied to thedynamic print path106 in order to render thedocument116 in a format that is accepted by thedestination printer109. The use of thedynamic print path106 in thecomputer system103 provides an advantage in that thecomputer system103 communicates directly with thedestination printer109 without the intervention of a print server or other intermediate device as will be described.
The[0014]dynamic print path106 includes ageneric print driver119, aport monitor123, and aprint router126. During the course of the operation of thedynamic print path106, a printready file129 is created that comprises thedocument116 embodied in a format that is accepted by various printers such as thedestination printer109. During the course of a print operation, one ormore user interfaces133 may be generated by theprint router126 as will be discussed.
Next, the operation of both the[0015]computer system103 and thedynamic print path106 in performing a print operation is described. To begin, theapplication113 generates thedocument116 that is to be printed by theprinter109. In this respect, theapplication113 may be any application that can generate adocument116. Such applications may include, for example, word processors, drawings programs, or any other application. Once thedocument116 is created, a user indicates a desire to print thedocument116 using the appropriate mechanisms within theapplication113. Such mechanisms may be, for example, print buttons or other user interface components. When initiating the printing of thedocument116 using such mechanisms in theapplication113, a user may identify that thedynamic print path106 be employed to render the document for printing. Such may be identified as an alternative to existing printer choices.
Assuming that the[0016]dynamic print path106 is selected, then thedocument116 is applied to thegeneric print driver119 to be rendered. Thegeneric print driver119 is “printer generic” in that it is not designed for rendering a document into a print ready format that is associated with or compatible with a specific printer. In this respect, thegeneric print driver119 renders thedocument116 into the printready file129 without a specification of theultimate destination printer109 upon which the document is to be printed.
After the print[0017]ready file129 is created, thegeneric print driver119 provides the printready file129 to theport monitor123. Theport monitor123 then writes the printready file129 to a memory in thecomputer system103 for temporary storage before being transmitted to thedestination printer109. This is done since theultimate destination printer109 has yet to be selected for printing. Theport monitor123 then informs theprint router126 that the printready file129 is to be printed, thereby initiating the functions of theprint router126.
The[0018]print router126 facilitates the selection or specification of thedestination printer109 from a group ofpotential destination printers109. Also, theprint router126 directs the transmission of the printready file129 to thedestination printer109 using a predefined data communications protocol suite. To begin, theprint router126 facilitates the selection or specification of theprinter109 by generating anappropriate user interface133. Theuser interface133 may provide a user with the opportunity to select thedestination printer109 from a group of potential destination printers or may otherwise allow the user to specify thedestination printer109. The selection or specification of thedestination printer109 may be performed subsequent to the rendering of thedocument116 into the printready file129 by thegeneric print driver119 or may be performed in parallel to the operation of thegeneric print driver119. Theuser interface133 provides a user with the opportunity not only to specify theprinter109, but also a particular port within theprinter109 that is to be used for data communications during the course of the print operation.
Once the[0019]destination printer109 has been selected or otherwise specified, then theprint router126 queries thedestination printer109 to confirm that theprinter109 is a printer in fact. For example, thedestination printer109 may be coupled to thecomputer system103 across a network. In such case, the query may be performed using a Simple Network Management Protocol (SNMP) or some other protocol. If the printer status is confirmed, then theprint router126 queries theprinter109 to confirm that the print ready format of the printready file129 generated by thegeneric print driver119 is compatible with or is the same as a printready format129 required by theprinter109. This query may also be performed using SNMP or other appropriate protocol.
In another embodiment, a translator may be employed that translate the print[0020]ready file129 from the previously rendered print ready format into a print ready format that is compatible with the selectedprinter109.
Assuming that the[0021]printer109 can accept the print ready format of the printready file129 or that the printready file129 was properly translated, then theprint router126 opens a communications channel by opening a socket, for example, with theprinter109 to facilitate data communications. To facilitate the data communication, theprint router126 employs a default port number unless an alternate port number is specified using theuser interface133 as mentioned above. Then, theprint router126 directs the transmission of the printready file129 to thedestination printer109 for printing thereon using an appropriate data communications protocol suite. The data communications protocol suite may be, for example, Transmission Control Protocol/Internet Protocol (TCP/IP) as described by Braden, R. editor, Requirements for Internet Hosts—Communications Layers, RFC 1122, Internet Engineering Task Force, October 1989, or other appropriate protocol suite as can be appreciated by those with ordinary skill in the art. Upon receiving the printready file129, theprinter109 prints thedocument116 embodied therein.
The[0022]dynamic print path106 provides several advantages in that thedestination printer109 is not statically defined where a printer specific print driver is employed. This provides for greater flexibility in use of portable computer systems such as laptops, personal digital assistants, or other devices. For example, in one scenario assume thatcomputer system103 is a portable computer that is temporarily linked to a local area network and that the user wishes to print a document on a nearby printer coupled to the network. If the print path for this printer were to be statically defined, then the user would have to install the printer specific print driver and an appropriate port monitor on the portable computer. Many users may not have the technical savvy necessary to perform the needed installation procedure or such users may not have the necessary processing privileges to perform the needed installation procedure. Also, users may not wish to perform the needed installation procedure as they may not wish to burden their computer system for a quick, one-time print job.
However, if the[0023]dynamic print path106 exists on their portable computer, the user can initiate a print operation and need only enter the printer IP address or other network designation using theuser interface133 to print thedocument116. Ultimately, a print operation may be performed without the need to communicate with a print server associated with the destination printer or other intermediate device since theprint router126 facilitates direct transmission of the printready file129 to thedestination printer109 over a network or through some other interconnection.
In addition, each of the various blocks shown in the functional block diagram of FIG. 1 represents a module, object, or other grouping or encapsulation of underlying functionality. However, the same underlying functionality may exist in one or more modules, objects, or other groupings or encapsulations that differ from those shown in FIG. 1 without departing from the present invention as defined by the appended claims.[0024]
With reference to FIG. 2, shown is an embodiment of the[0025]print network100 denoted herein asprint network100a.Theprint network100aincludescomputer system103awith a processor circuit having aprocessor153 and amemory156, both of which are coupled to alocal interface159. In this respect, thelocal interface159 may be, for example, a data bus with an accompanying control/address bus as can be appreciated by those with ordinary skill in the art. Thecomputer system103aincludes adisplay device163 that is coupled to thelocal interface159 by virtue of adisplay interface166. Thecomputer system103aalso includes akeyboard169 and amouse173, both of which are coupled to thelocal interface159 through various input interfaces176. Thecomputer system103amay also include other input or output devices as can be appreciated by those with ordinary skill in the art.
The[0026]print network100aalso includes adata communications network179 that is coupled to the local interface through anetwork interface183. Thedisplay interface166, input interfaces176, andnetwork interface183 may be, for example, interface cards or other suitable circuits as can be appreciated by those with ordinary skill in the art. Theprint network100aalso includes a number ofprinters109 that are coupled to thenetwork179.
The[0027]computer system103aalso includes a number of software components and/or data files that are stored on thememory156 and are executable or processed by theprocessor153. Among these components is anoperating system186 that includes a datacommunications protocol suite189 that is employed to communicate with any of theprinters109 over thenetwork179. In addition, one or more applications113aare included in thememory156 and are used to generate one or more documents116a.Thecomputer system103aalso includes ageneric print driver119a,aport monitor123a,and aprint router126athat are software embodiments of the generic print driver119 (FIG. 1), the port monitor123 (FIG. 1), and the print router126 (FIG. 1), respectively. Thegeneric print driver119agenerates a print ready file129athat is stored in a predefined location in thememory156 by the port monitor123a.
During operation, the[0028]print router126amay create one or more user interfaces113athat are displayed on thedisplay device163. Thegeneric print driver119a,port monitor123a,and the printready file123aprovide for thedynamic print path106 within thecomputer system103ato be able to print the document116aon any one of theprinters109 coupled to thenetwork179. In this respect, theprint router126aprovides the user with an ability to select one of the printers109afor printing by virtue of auser interface133adisplayed on thedisplay device163. Thegeneric print driver119arenders the document116ainto the print ready file129awithout a specification of one of theprinters109 upon which the document116ais to be printed. The user may specify the desiredprinter109 upon which document116ais to be printed by manipulating thekeyboard169, themouse173, or other input device as can be appreciated by those with ordinary skill in the art.
The[0029]network179 includes, for example, the Internet, intranets, wide area networks (WANs), local area networks, wireless networks, ad-hoc networks, or other suitable networks, etc., or any combination of two or more such networks.
The[0030]memory156 is defined herein as both volatile and nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power. Thus, thememory156 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, floppy disks accessed via an associated floppy disk drive, compact discs accessed via a compact disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, or a combination of any two or more of these memory components. In addition, the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), or magnetic random access memory (MRAM) and other such devices. The ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other like memory device.
In addition, the[0031]processor153 may represent multiple processors and thememory156 may represent multiple memories that operate in parallel. In such a case, thelocal interface159 may be an appropriate network that facilitates communication between any two of the multiple processors, between any processor and any one of the memories, or between any two of the memories etc. Theprocessor153 may be electrical, optical, or molecular in nature.
The[0032]operating system186 is executed to control the allocation and usage of hardware resources in thecomputer system103asuch as the memory, processing time and peripheral devices. In this manner, theoperating system186 serves as the foundation on which applications depend as is generally known by those with ordinary skill in the art.
With reference to FIG. 3 shown is a view of the[0033]print network100athat shows an example of the datacommunications protocol suite189 as employed between thecomputer system103aand a select one of theprinters109. The datacommunications protocol suite189 facilitates direct communication of the print ready file129afrom thecomputer system103ato a select one of theprinters109 without the intervention of a print server or other intermediate device. The datacommunications protocol suite189 includes atransport layer203, anetwork layer206, and alink layer209. Thesame protocol suite189 is employed on theprinter109 as well.
The[0034]transport layer203 may comprise, for example, a Transmission Control Protocol (TCP). Thenetwork layer206 may employ, for example, an Internet Protocol (IP). Thelink layer protocol209 may employ an Ethernet network or other network technology. Theprint router126adirects the datacommunications protocol suite189 to communicate the print ready file129ato theprinter109. The datacommunications protocol suite189 located in theprinter109 provides the printready file129 to aprinter controller213 that orchestrates the printing of the document116aembodied therein.
Turning then to FIG. 4, shown is the[0035]user interface133athat is generated by theprint router126a(FIG. 2) to provide a user with the opportunity to select or specify a printer109 (FIG. 2) on a network179 (FIG. 2) to be used to print the document116a(FIG. 2). Theuser interface133aincludes aprinter field223 that includes a drop down list to facilitate a selection of one of a number of predefined printers for printing. Alternatively, a printer designation may be directly entered into theprinter field223. The selectedprinter109 may be specified by virtue of an IP address, network alias, or other designation. As shown with reference to FIG. 4, anIP address226 is employed.
In addition, a user may specify the port within the[0036]printer109 that is to be used to communicate therewith. The port is specified by appending aport identifier229 onto the printer designation, although it may be possible that theport identifier229 be designated in another manner such as with a separate field, etc. The user may specify a nickname in anickname field233 to represent aprinter109 that is entered into theprinter field223. After the nickname is entered, it is included in the drop down list associated with theprinter field223 for selection in the future. Once theappropriate printer109 has been entered or selected, then the user may manipulate the “OK”button236 to cause the printing of the document116aon the selected or specifiedprinter109. Alternatively, the user may manipulate the cancelbutton239 to cancel the print job.
Referring next to FIG. 5, shown is a flow chart of the[0037]print router126/126aaccording to an embodiment of the present invention. Alternatively, the flow chart of FIG. 5 may viewed as depicting steps of a method implemented in the computer system103 (FIG. 1) in order to provide a dynamic print path106 (FIG. 1) for printing document116 (FIG. 1) on a specified printer109 (FIG. 1).
The[0038]print router126/126ais implemented, for example, by the port monitor123/123a(FIG. 1/FIG. 2) after the printready file129/129a(FIG. 1/FIG. 2) has been created by thegeneric print driver119/119a(FIG. 1/FIG. 2) and stored in the memory156 (FIG. 2). Alternatively, the operation of theprint router126/126amay be implemented at another point in time during the print operation.
Beginning with[0039]box256, theprint router126/126aobtains an input that indicates a selection of a desiredprinter109 to which thedocument116 is to be printed. To obtain the input, the user interface133 (FIG. 1) may be generated to facilitate a user selection or specification of thedestination printer109 from a group of potential destination printers or some other approach may be employed. Then, inbox259, theprint router126/126aconfirms that the chosenprinter109 is a printer in fact. This may be done by generating and transmitting a query to therespective printer109 to determine whether such device is in fact a printer. To create and transmit such a query, the Simple Network Management Protocol (SNMP) may be employed. Inbox263, if the selected or specifiedprinter109 is confirmed to be aprinter109 then theprint router126/126aproceeds tobox266. Otherwise, inbox269 an indication of a print failure is made to the user through anappropriate user interface133. Thereafter, theprint router126/126aends as shown.
Assuming that the[0040]destination printer109 has been confirmed to be a printer inbox263, then inbox266 theprint router126/126anext confirms that thedestination printer109 employs a print ready format that is compatible with the print ready format of the print ready file129 (FIG. 1). This may be determined by transmitting an appropriate query to thedestination printer109 using SNMP or other appropriate protocol. Thereafter, inbox273, if the designatedprinter109 employs a print ready format that is compatible with the print ready format of the printready file129, then theprint router126/126aproceeds tobox276. Otherwise, theprint router126/126amoves tobox269 to indicate the failure of the print job due to incompatibility. Alternatively, the printready file129 may be applied to an appropriate translator that translates the printready file129 into a print ready format that is compatible with thecurrent destination printer109. Thereafter, theprint router126/126awould proceed tobox283.
In[0041]box276, the print router opens a communications channel with the destination printer. This may be done, for example, by opening a socket with the destination printer using a predefined port. Thereafter, inbox279 if the connection has been successfully made, then the print router proceeds tobox283. Inbox283, the printerready file129 is transmitted to the printer using the data communications protocol suite189 (FIG. 1) or other appropriate protocol suite. In this respect, the print ready file is transmitted directly from thecomputer system103 to theprinter109 without the intervention of a print server or other intermediate device. Inbox286, theprint router126/126adetermines whether the transmission of the printready file129 is complete. If such is the case, then theprint router126/126aproceeds tobox289. Otherwise, theprint router126/126areverts back tobox283 to continue to transmit the printready file129 to theprinter109. Inbox289, theprint router126/126acloses the communications channel with thedestination printer109 as the communication of the print ready129 file is complete. This may be done, for example, by closing the open socket. Thereafter, theprint router126/126ais inactive.
Although one embodiment of the[0042]dynamic print path106 is shown as being embodied in software or code executed by general purpose hardware in thecomputer system103a,as an alternative thedynamic print path106 may also be embodied in dedicated hardware or a combination of software/general purpose hardware and dedicated hardware. If embodied in dedicated hardware, thedynamic print path106 can be implemented as a circuit or state machine that employs any one of or a combination of a number of technologies. These technologies may include, but are not limited to, discrete logic circuits having logic gates for implementing various logic functions upon an application of one or more data signals, application specific integrated circuits having appropriate logic gates, programmable gate arrays (PGA), field programmable gate arrays (FPGA), or other components, etc. Such technologies are generally well known by those skilled in the art and, consequently, are not described in detail herein.
The block diagrams of FIGS.[0043]1-3 and/or the flow chart of FIG. 5 show various embodiments of the architecture, functionality, and operation of an implementation of thedynamic print path106. If embodied in software, each block may represent a module, segment, or portion of code that comprises program instructions to implement the specified logical function(s). The program instructions may be embodied in the form of source code that comprises human-readable statements written in a programming language or machine code that comprises numerical instructions recognizable by a suitable execution system such as a processor in a computer system or other system. The machine code may be converted from the source code, etc. If embodied in hardware, each block may represent a circuit or a number of interconnected circuits to implement the specified logical function(s).
Although the block diagrams of FIGS.[0044]1-3 and/or the flow chart of FIG. 5 show a specific order of execution, it is understood that the order of execution may differ from that which is depicted. For example, the order of execution of two or more blocks may be scrambled relative to the order shown. Also, two or more blocks shown in succession in FIGS. 1, 3, and5 may be executed concurrently or with partial concurrence. In addition, any number of counters, state variables, warning semaphores, or messages might be added to the logical flow described herein, for purposes of enhanced utility, accounting, performance measurement, or providing troubleshooting aids, etc. It is understood that all such variations are within the scope of the present invention.
Also, where the[0045]dynamic print path106 is implemented in software or code, it can be embodied in any computer-readable medium for use by or in connection with an instruction execution system such as, for example, a processor in a computer system or other system. In this sense, the logic may comprise, for example, statements including instructions and declarations that can be fetched from the computer-readable medium and executed by the instruction execution system. In the context of the present invention, a “computer-readable medium” can be any medium that can contain, store, or maintain thedynamic print path106 for use by or in connection with the instruction execution system. The computer readable medium can comprise any one of many physical media such as, for example, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor media. More specific examples of a suitable computer-readable medium would include, but are not limited to, magnetic tapes, magnetic floppy diskettes, magnetic hard drives, or compact discs. Also, the computer-readable medium may be a random access memory (RAM) including, for example, static random access memory (SRAM) and dynamic random access memory (DRAM), or magnetic random access memory (MRAM). In addition, the computer-readable medium may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other type of memory device.
Although the invention is shown and described with respect to certain preferred embodiments, it is obvious that equivalents and modifications will occur to others skilled in the art upon the reading and understanding of the specification. The present invention includes all such equivalents and modifications, and is limited only by the scope of the claims.[0046]