Not applicable.
The invention relates to the field of computer software control of output devices, and more particularly to a platform for generating a firmware, font, template or other update for a printer or other output device and transmitting that resource or update to the device as embedded, intermediate language object in an electronic document.
Laser, inkjet and other printers have operated for years under the limitation that getting updates into their firmware, or downloading fonts, forms or other enhancements or updates to such printer or other output devices is often a difficult task. As illustrated generally in
Moreover, the updating of fonts, forms or other templates or content to the printer has likewise proved difficult in practice. In some commercial platforms, it has been known to drive fonts, forms or templates to a printer or other output device by embedding that data into a document, for example an Adobe™ Portable Document Format (PDF™) file or other document, and transmitting the resulting document to the printer. However, in known printer implementations those fonts, forms or other content are not persistent and generally must be transmitted to the printer repeatedly, document-by-document each time a new document is generated. Alternatively, low-level instructions such as code in Printer Control Language (PCL™) or other electronic form may be communicated to the printer over a serial, parallel or other port to dynamically form fonts or other content in printer RAM (random access memory), but that type of non-embedded control code is likewise not persistent and not extensible. Other problems in the maintenance, updating and use of printers and other output devices exist.
The invention overcoming these and other problems in the art relates in one regard to a system and method for generating control resources for a printer or other output device, in which the control resources may be automatically embedded in an electronic document and passed to the printer or other output device without a necessity for special formatting or coding. In embodiments, the control resources may be encapsulated in an intermediate language object embedded in or associated with the electronic document, which intermediate language object may be interpreted or otherwise executed in the printer or other device. Because the printer or other output device may receive the firmware, font or other resource update based on a secure, programmable control infrastructure that is not dependent on specific device drivers or other idiosyncratic details, the updating and control of printers and printed output along with other types of output may be streamlined and made more reliable, powerful and flexible.
A user operating the client 110 may use a user interface 126 to manipulate that machine or device to initiate the updating of output device resources in printer 102 or another output device. In embodiments as shown, the client 110 may contain a print manager 116, which may in embodiments be or include a service hosted by an operating system, as well as a common language runtime environment 112, which may similarly be incorporated in or be accessed by an operating system. The user may select an update, modification, patch or other alteration to the resources of printer 102 or other output device on user interface 126 as shown, and invoke the common language runtime environment 112 to perform that function. The update or updates chosen to be delivered to the printer 102 or other output device may include, for example, an update to firmware 106, a set of fonts, one or more document or other outlines or templates, or other resources or content for that output device.
According to embodiments of the invention in one regard, the update or updates chosen may be read or accessed from a CD-ROM or other media, be accessed or downloaded from the Internet or other network connection, or obtained from other media or channels. For example, in embodiments the manufacturer Web site for a particular model of printer or facsimile machine may be accessed to download and acquire that set of data, code or content.
The common language runtime environment 112 may receive the desired updates to the output device resources, and compile the code, instructions, content or data reflecting those updates to an intermediate language object 114. The intermediate language object 114 may be or include, in embodiments, interpretable or executable code. According to embodiments of the invention in another regard, the intermediate language object 114 may then be embedded, attached, linked to, or otherwise associated with an electronic document 120 for transmission to printer 102 or other output device. According to embodiments of the invention in one regard, the electronic document 120 may be or include an electronic document and related resources of the type described in the aforementioned U.S. patent application Ser. No. 10/______ filed Apr. 30, 2004, attorney docket number MS 1-2051US, entitled “Document Markup Methods and Systems”, or other electronic documents composed according to other componentized schema. The intermediate language object 114 may be embedded or associated with the electronic document 120 via the common language runtime environment 112, by action of the operating system, by an output-aware application such as advanced word processing packages, or other services or resources.
The electronic document 120 so generated may contain a set of document components 122, including text, graphics, links to other content as well, as illustrated, as a firmware update 124 or other resource update or modification. In other embodiments, the firmware update 124 or other resource update may be the only internal content of electronic document 120, when a “thin” document is so desired. The electronic document 120 may be transmitted to the printer 102 or other output device via connection 108, and received in print engine 128.
The print engine 128 may be configured to detect the presence of executable or interpretable code or instructions within the set of document components 122. In the case where such code or resources are present as illustrated, the print engine 128 may invoke an interpreter 118 to read the firmware update 124 or other update to the control or content of printer 102 and its operating program. The firmware update 124 may be encoded, for example, in assembler or assembler-like code, in C++ or XML (extensible Markup Language) code or data, or other executable or interpretable information. When the firmware update 124 is interpreted by print engine 128 it may be processed and executed to perform an update to firmware 106 of printer 102, for example to install updated shading routines, resolution enhancement, power management features, or other printing or operating features or components of the output device.
According to embodiments of the invention in a further regard and as illustrated in
The content 132 which may be embedded into electronic document 120 and transmitted or downloaded to printer 102 or other output device may include, for instance, forms (e.g., commercial forms such as sales receipts or airline reservations), fonts of different types, glyphs, character sets such as Unicode or language-specific characters, clip art, or other content or data. In embodiments as shown, the electronic document 120 may thereby incorporate more than one resource update depending which of these and other types of updated resources may be delivered. Other types or categories of resource updates are possible.
In step 412, the firmware update 124 or other output device resource update may be compiled in the common language runtime environment 112 down to an intermediate language object 114. The intermediate language object 114 may be or include code or instructions such as assembler, structured languages such as C++, XML or other language or code. In step 414, the intermediate language object 114 may be embedded, attached or otherwise associated with electronic document 120, for instance in the form of inline code or instructions, header data, or other formats or structures. In step 416, the electronic document 120 may be transmitted to printer 102 or other output device, for example over connection 108 such as a serial, parallel, USB or other connection or channel. In step 418, the electronic document 120 may be received, decomposed and processed in printer 102 or other output device, for example to enumerate the set of document components 122.
In step 420, the intermediate language object 114 may be interpreted in printer 102 or other output device, for example in interpreter 118 in print engine 128 or other resources. In step 422, the code, instructions or data so interpreted may be processed and executed to perform a firmware, font or other control or content update to the EPROM 104 of printer 102, or otherwise perform an update to the resources of the printer 102 or other output device. In step 424, processing may repeat, return to a prior processing point, jump to a further processing point or end.
The foregoing description of the invention is illustrative, and modifications in configuration and implementation will occur to persons skilled in the art. For instance, while the invention has generally been described in terms of generating and transmitting a firmware update 124 or other resource updates to a printer 102, in embodiments the output device receiving the resource update may be or include, for example, a facsimile machine, a copier, a scanner, a multifunction machine (e.g., printer/copier/scanner) or other equipment or hardware.
Similarly, while the invention has in embodiments been described as transmitting a firmware update 124 or other resource update in a single object, in embodiments the resource update may consist of multiple updates contained within a single electronic document 120, or updates or resources contained in multiple electronic documents. Other hardware, software or other resources described as singular may in embodiments be distributed, and similarly in embodiments resources described as distributed may be combined.
Moreover, while the invention has in general been described as updating the output device resources of a printer 102 when initiated via a separate client 110, in embodiments the updating of printer 102 or other output device may be initiated via other locations or resources, including for example at or via the printer 102 itself. For further instance, while the invention has generally been described in scenarios where a user operates a user interface 126 to select the firmware update 124 or other resource to be updated, in embodiments the firmware update 124 or other updated resource may be automatically transmitted to one or more printer 102 or other output device or devices, for instance via a collective push delivered over a network. The scope of the invention is accordingly intended to be limited only by the following claims.
The subject matter of this application is related to the subject matter of co-pending U.S. patent application Ser. No. 10/______ filed Apr. 30, 2004, attorney docket number MSI-2051US, entitled “Document Markup Methods and Systems”, which application is assigned or under obligation of assignment to the same entity as this application, and which application is incorporated by reference herein.