1. Field of the Disclosure
The present disclosure relates generally to determining the capabilities of a printing device.
2. Description of the Related Art
In the field of print processing, it is a challenging task for Independent Software Vendors (also referred to herein as “ISVs”) to provide a consistent user interface for receiving a desired print intent from a user while supporting private settings for the printers of multiple Independent Hardware Vendors (also referred to herein as “IHVs”). The communication between the Windows® print subsystem, an IHV's plug-in driver, and an ISV's application causes part of the difficulties, because the communication is done thru indexed based binary DevMode structures (also referred to herein as “DevMode”) and binary DevCaps structures (also referred to herein as “DevCaps”).
Microsoft® introduced a new XML based print schema to address the problems associated with communication between the print subsystem and external applications. The print schema technology uses an XML based public schema to describe printer capabilities, device configurations, and job formatting settings. Applications can use the XML based schema to provide print dialogs to change print settings.
Whenever a user changes a selected option for a setting, the changed setting and the respective option is added to a delta (also referred to herein as “Δ”) PrintTicket document and merged and validated with a specified base PrintTicket to produce a resulting PrintTicket, which is used to get a corresponding resulting PrintCapabilities document. The resulting PrintCapabilities document is then used to re-populate the user interface (also referred to herein as a “UI”).
In one embodiment, a method for updating print capabilities of a printing device comprises receiving initial print ticket markup language data, generating initial printing device capabilities data including one or more initial printing device capabilities based on the initial print ticket markup language data, receiving second print ticket markup language data, and generating updated printing device capabilities data including one or more updated printing device capabilities based on the second print ticket markup language data. The method further comprises generating one or more changed printing device capabilities markup language data based on the initial printing device capabilities data and the updated printing device capabilities data, wherein the one or more changed printing device capabilities markup language data includes one or more changed printing device capabilities that indicate differences between the one or more initial printing device capabilities and the one or more updated printing device capabilities.
In one embodiment, a device for determining changes to print capabilities for a printer comprises a computer readable storage device, a processor, and a print driver configured to read one or more first print settings in a first print settings markup language file, generate first print capabilities data indicating one or more first print capabilities based on the one or more first print settings, and read one or more second print settings in a second print settings markup language file, the one or more second print settings including at least one print setting different than the one or more first print settings. The printer driver is further configured to generate resulting print capabilities data indicating one or more resulting print capabilities based on the one or more second print settings and the one or more first print settings, wherein the resulting print capabilities include a different print capability than the one or more first print capabilities, and generate delta print capabilities markup language data indicating delta print capabilities, wherein delta print capabilities include the different print capability than the one or more first print capabilities.
In one embodiment, one or more computer-readable storage media store instructions that, when executed by one or more computing devices, cause the one or more computing devices to perform operations comprising determining initial print capabilities based on initial print settings in an initial print settings file, generating resulting print settings by merging the initial print settings in the initial print settings file with second print settings in a second print settings file, determining resulting print capabilities based on the resulting print settings, determining changed print capabilities based on the resulting print capabilities and the initial print capabilities, and generating a resulting print file including the changed print capabilities.
Though the following description is of certain illustrative embodiments, alternatives, equivalents, and modifications are included within the scope of the claims. Additionally, the illustrative embodiments may include several novel features, and a particular feature may not be essential to practice the systems and methods described herein.
Information is presented to a user via the display device 190, including information sent by the printing device 180. The print capabilities device 100 receives user provided information (e.g., user selections of print settings) and relays the information to the printing device 180.
The print capabilities device 100 includes a print dialogue application 140 and a printer driver 150 (though in other embodiments, the print dialogue application 140 and the printer driver 150 may operate on different devices, for example in a distributed computing environment). The print dialogue application 140 generates a user interface that presents information to the user and/or receives information from the user. The user interface may present the information in the form of a graphical interface that shows printer settings and capabilities and that receives user selections, such as selections of an option for a respective setting. The information may also be presented in any other manner that allows a user to view the information and/or select one or more options. The UI is sent to the display device 190, and the display device 190 presents the user interface to the user.
The printer driver 150 receives data, performs requested operations, and returns requested data (if any) to the print dialogue application 140. For example, the print dialogue application 140 invokes the functionality of the printer driver 150 via a function call, passes data to the printer driver 150 in the form of parameters of the function call, and receives the data returned by the function. The functions implemented by the printer driver 150 and the interface for calling the functions may conform to an application programming interface (API), for example the WinFX PT/PC, Win32 PT/PC, and PrintTicket APIs.
The printer driver 150 may convert received data into a format readable by the printing device 180. For example, the printer driver 150 may receive a print job from a software application, convert the print job into PDL data for the printing device 180, and transmit the PDL data to the printing device 180. The printer driver 150 also communicates with the printing device 180 about the settings and status of the printing device (e.g., paper, level, ink level, toner level, errors, selected paper size, colors).
The printer driver 150 may be configured with the relationships between the settings, capabilities, and selected settings options of the printing device 180. Thus, the printer driver 150 can determine which print capabilities are or are not available based on the selected options for one or more settings and determine which settings options are constrained based on the selected options for one or more settings.
For example, the printing driver 150 may be configured with the priorities of different settings and adjust printer capabilities according to respective selected options for the settings. Thus, if the selected option of a lower priority setting is changed, the printer driver 150 does not change the capabilities of the higher priority settings. However, if the selected option of a higher priority setting is changed, the printer driver 150 adjusts the capabilities of the lower priority setting(s), if necessary.
Following the above example, a printer driver may be configured to assign the print medium size setting a lower priority than the print medium type setting or the borderless printing setting. Thus, if the selected option for the print medium size setting is changed, the capabilities for the print medium type or borderless printing settings will not be changed because they are assigned a higher priority. However, if the option selected for the print medium type setting or the borderless printing setting is changed, then the capabilities for the print medium size (and other lower priority settings) will be changed, if necessary.
The print capabilities device 200 includes one or more processors 201 (also referred to herein as “CPU 201”), which may be a conventional or customized microprocessor(s). The CPU 201 is configured to read and execute computer-readable instructions, and the CPU 201 may command/and or control other components of the print capabilities device 200.
The print capabilities device 200 also includes I/O interfaces 203, which provide communication interfaces to other devices, including a keyboard, a display device, a mouse, a printing device, a touch screen, a light pen, an optical storage device, a scanner, a microphone, a camera, etc. The print capabilities device 200 additionally includes a memory 205, which may be volatile or non-volatile, such as ROM, RAM, and flash memory. The network interface 207 allows the print capabilities device 200 to communicate with the network 270. The storage device 209 stores data or modules and may include, for example, a hard drive, an optical storage device, a diskette, and/or a solid state drive. The components of the print capabilities device 200 are connected and communicate via a bus. The print capabilities device 200 includes an operating system, which manages one or more of the hardware, the processes, the interrupts, the memory, and the file system.
The print capabilities device 200 also includes a print dialogue module 210, a printer driver 220, and lookup table(s) 225. A module may be executed by the print capabilities device 200 to cause the print capabilities device 200 to perform certain operations, though for ease of description a module may be described as performing the operations. Modules may include logic and/or computer readable instructions and may be implemented in software, firmware, and/or hardware. In other embodiments, the print capabilities device 200 may include more or less modules, the modules may be combined into fewer modules, or the modules may be divided into more modules.
The print dialogue module 210 includes instructions that, when executed, cause the print capabilities device 200 to generate a print dialogue user interface that includes printing information, such as printing device settings, capabilities, and selected options. The user interface may include any combination of text and graphics and may receive data from a user, such as via a text field or by user selection of a control on the interface (e.g., a menu, button, check box). As discussed above, the printer driver 220 communicates with a printing device (e.g., printing device 280). In the embodiment shown in
For example, the lookup table(s) 225 may map selected print options to print capabilities (e.g., map a PrintTicket to a PrintCapabilities and/or map a DevMode to a DevCaps). The lookup table(s) 225 may include a column for each setting (e.g., media size, media type, color, duplexing, stapling, font) and each capability and row for each permutation of setting options, and a row of the lookup table may indicate the printing capabilities for a printing device when the printing device is set to the settings options indicated in the respective row. In other embodiments, the print capabilities device 200 determines changes in print capabilities by other means, including logic, data trees, etc.
Beginning in block 300, base print capabilities are obtained from the printer driver. For example, the printer driver may generate print capabilities data that indicates the base print capabilities of a printing device based on received data (e.g., base print options, for example base print settings data) and send the print capabilities data (e.g., an object, a file, a pointer, a data structure) to a requesting application and/or device. The received data and the print capabilities data may include text-based data, which may include markup language data (e.g., XML, HTML, SGML, XHTML). An example of print capabilities data that includes XML is a PrintCapabilities document (also referred to herein as “PrintCapabilities” or “PC”). Also, an example of print options data (also referred to herein as “print options”) that includes XML is a PrintTicket document (also referred to herein as “PrintTicket” or “PT”). Next, in block 310, a user interface is generated based on the base print capabilities data. The user interface may be presented to a user via a display device.
Moving to block 320, Δprint capabilities, which show changes to the print capabilities relative to the previous print capabilities (e.g., the base print capabilities), are obtained from the printer driver. The printer driver may receive updated print settings data (e.g., updated print options) and, in response, generate data that contains substantially only the Δprint capabilities and send the data to a requesting application and/or device. Also, the printer driver may include additional data with the Δprint capabilities data and add one or more indicators to the data to identify the Δprint capabilities data.
Finally, in block 330, portions of the user interface that are associated with the Δprint capabilities are updated. For example, the user interface may have one or more fields that are associated with respective print capabilities, and when a print capability is modified, the respective fields on the user interface are updated, and one or more other fields that are not associated with the Δprint capabilities are maintained, thereby eliminating the need to refresh the entire user interface.
Next, in block 410, a resulting PT 457 is generated (e.g., by the printer driver) based on the base PT 451 and a ΔPT 453. The generation of the resulting PT 457 may include merge and validate operations. The merge operation combines the base PT and the ΔPT into a resulting PT 457, and the validate operation verifies that the printing device can implement the functionality described by the options selected for the settings in the resulting PT 457.
Finally, in block 420, a ΔPC 459 is generated based on the base PC 455 and updated print capabilities that are determined based on the resulting PT 457. The ΔPC 459 is added to the resulting PT 457. For example, the ΔPC 459 may be added to a resulting PT 457 by including the ΔPC 459 and tags (e.g., markup language tags) that indicate the ΔPC 459, and/or the ΔPC 459 may be stored in a predetermined location in the resulting PT 457. The resulting PT 457 (including ΔPC 459) may be provided to an application or device (e.g., a calling application, a requesting device).
Accordingly, when an application or a device requests the generation of a resulting PT 457 (such as by sending a request to a printer driver), it will receive a resulting PT 457 and a ΔPC 459 in return. Thus, the application or device that receives the resulting PT 457 does not need to call an update capabilities function to determine updated print capabilities. For example, in some embodiments the base PT 451 and the ΔPT 453 are sent to a driver via a MergeAndValidate (Base PT, ΔPT) function call and the driver returns a resulting PT 457 that includes the ΔPC 459, thus allowing an application and/or device to communicate with the driver via an API specified by Windows®. Additionally, the base PT or the ΔPT sent to the driver may include the base PC 455, or the driver may store the base PC and/or retrieve it from a predetermined location in memory.
Next, in block 510, a ΔPC 563 is generated based on the resulting PC 561 and the base PC 553. Finally, in block 520, the ΔPC 563 is added to the resulting PC 561. For example, the ΔPC 563 may be added to a resulting PC 561 by including the ΔPC 563 and tags (e.g., markup language tags) that indicate the ΔPC 563, and/or the ΔPC 563 may be stored in a predetermined location in the resulting PC 561.
In some embodiments, a printer driver is configured to determine the capabilities of the respective printing device when the printing device is configured to the selected settings options in the input PT 551. The printer driver may receive the input PT 551 in a function call, generate the resulting PC 561, such as by accessing an internal repository of data (e.g., lookup tables, stored logic) regarding the settings and capabilities of the printing device, and determine the ΔPC 563. The printer driver adds the ΔPC 563 to the resulting PC 561 and returns the resulting PC 561 to a calling application/device. Thus, the calling application/device will receive both the resulting PC 561 and the ΔPC 563 in response to a request to generate the resulting PC 561 for an input PT 551.
In
Moving to block 628, a ΔPC is generated based on the ΔDevMode. For example, one or more lookup tables may be used to map the changes to the selected settings options in the ΔDevMode to one or more changes in a DevCaps structure, and the one or more changes in the DevCaps structure may then be used to generate the ΔPC. Additionally, the resulting DevMode may be used to generate a resulting DevCaps and the base DevMode may be used to generate a base DevCaps. The ΔPC may then be generated by comparing the resulting DevCaps and the base DevCaps. Proceeding to block 630, the ΔPC is added to the resulting PT. Finally, in block 632, the resulting PT is returned.
In
In
In some embodiments, the print dialogue application 810 operates on a local computing device and the printer driver 800 operates on a remote distributed computing service (e.g., a Cloud). The data in stages 1, 2, 4, and 5 is transmitted between the print dialogue application 810 and the printer driver 800 via one or more networks.
Therefore, in this embodiment, if the base print settings data (e.g., Base PT 851) indicates that the initially selected option for borderless printing is “off,” the base print capabilities data (e.g., Base PC 853) generated based on the base printing settings data (e.g., Base PT 851) will indicate that the capabilities for the paper size setting are Letter, Legal, A5, A4, B5, L 89×127 mm, 2 L 127×178 mm, Hagaki 100×148 mm, Hagaki 2 200×148 mm, Choukei 3 120×235 mm, Choukei 4 90×205 mm, Youkei 4 105×235 mm, Youkei 6 98×190 mm, Credit Card 2.13×3.39 in 54×86 mm, Card 2.16×3.58 in 55×91 mm, CD-R tray B, and Custom. If a user sets borderless printing to “on” via the user interface, delta print setting data (e.g., ΔPT 857) is generated that indicates that the option for borderless printing is changed to “on.” The delta print setting data (e.g., ΔPT 857) is sent to the printer driver, which generates updated print settings data (e.g., Resulting PT 859). The printer driver also generates the corresponding updated print capabilities data, which indicates that the print capabilities for the paper size are letter, A4, L 89×127 mm, 2 L 127×178 mm, Hagaki 100×148 mm, Credit Card 2.13×3.39 in 54×86 mm, and Card 2.16×3.58 in 55×91 mm.
The printer driver then generates delta print capabilities data (e.g., ΔPC 863) based on the base print capabilities data (e.g., Base PC 853) and the updated print capabilities data. The delta print capabilities data indicates that the print capabilities for the paper size setting have changed to no longer include Legal, A5, B5, Hagaki 2 200×148 mm, Choukei 3 120×235 mm, Choukei 4 90×205 mm, Youkei 4 105×235 mm, Youkei 6 98×190 mm, CD-R tray B, and Custom. A resulting user interface (e.g., partially updated UI 861) may then be generated that changes substantially only the portions of the user interface corresponding to the modified print capabilities (e.g., removes the paper size options that are no longer available) and any modifications to the selected options (e.g., shows borderless printing is set to “on”), and maintains the remainder of the user interface.
The above described systems and methods can be achieved by supplying a storage medium having computer-executable instructions for realizing the above described operations to one or more computing devices (e.g., CPU, MPU) that may read the computer-executable instructions stored in the storage medium and execute them.
In this case, the computer-executable instructions when read from the storage medium and performed by the one or more computing devices execute the operations of the above described embodiments. Thus, the computer-executable instructions or the storage medium storing the computer-executable instructions therein constitute an embodiment.
Any applicable computer-readable storage medium (e.g., a floppy disk, a hard disk, an optical disk, a magneto-optical disk, a CD-ROM, a CD-R, a magnetic tape, a non-volatile memory card, a ROM) can be employed as a storage medium for supplying the computer-executable instructions.
The computer-executable instructions may be written to a memory provided on a function-extension board inserted into the computing device or on a function-extension unit connected to the computing device, and a CPU provided on the function-extension board or unit may carry out part or all of the actual processing that realizes the operations of the above-described embodiments.
When the computer-executable instructions are executed by the one or more computing devices, not only are the above described operations of the embodiments realized, but also an operating system working on the computing system may carry out part or all of the actual processing that realizes the operations of the above described embodiments.
While the above disclosure describes illustrative embodiments, it is to be understood that the invention is not limited to the above disclosure. To the contrary, the invention covers various modifications and equivalent arrangements within the spirit and scope of the appended claims.
This application is a continuation-in-part of U.S. patent application Ser. No. 13/010,531, filed on Jan. 20, 2011, which is incorporated by reference it its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 13010531 | Jan 2011 | US |
Child | 13346493 | US |