Information processing device, control method for information processing device, and program
Patent Information
- Application Number
- JP2026121713
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2026-06-29
- Publication Date
- 2026-08-27
AI Technical Summary
【0013】 上記の構成によれば、情報処理装置は、IPP等の所定の印刷プロトコルを利用可能な共通プリンタドライバを使用するので、印刷装置のベンダの違いによらない印刷命令を出力することができる。さらに上記の構成によれば、情報処理装置は、上記の所定の印刷プロトコルと異なる固有の印刷プロトコルを用いた印刷命令を出力することができる。従って、情報処理装置のユーザは、固有の印刷プロトコルを用いることにより利用可能となる、固有の印刷機能を利用することが可能となる。
Smart Images

Figure 2026137875000001_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to an information processing apparatus that generates a print command, a control method for the information processing apparatus, and a program.
Background Art
[0002] A configuration in which a print job is transmitted to a printing apparatus using a printer driver is generally known. An operating system (OS), which is basic software, is installed in an information processing apparatus. The printer driver is configured according to a print architecture defined by the OS and is called from the OS to operate. A vendor that provides a printing apparatus provides a printer driver that conforms to the specifications of the OS. The OS and the printer driver cooperate to realize a function of performing printing using the output destination printing apparatus.
[0003] By the way, as a printer driver when using a version of Microsoft (registered trademark)'s Windows (registered trademark) 8.1 or later as the OS, an architecture called a V4 printer driver has emerged. In the V4 printer driver, a vendor that provides a printing apparatus can provide a dedicated application for assisting the functions of the printer driver. This application is called UWP Device Apps (Universal Windows Platform Device Apps). UWP Device Apps can be obtained from a store application (Windows Store application or WSA) and installed in the information processing apparatus. Further, a PrinterExtension, which is a print setting application for performing vendor-specific print settings, can be associated with the V4 printer driver.
[0004] Furthermore, a printer driver known as a universal printer driver is conventionally known for controlling multiple types of printing devices with different functions (Patent Document 1). This printer driver can generate print jobs by processing drawing data to be appropriate for each individual printing device for each model.
[0005] Universal printer drivers, such as the one disclosed in Patent Document 1, are generally provided by each vendor. Therefore, one universal printer driver could handle multiple types of printing devices provided by the same vendor. However, it was difficult to use one universal printer driver to handle printing devices from different vendors. Universal printer drivers support only one, or at most two, types of PDL (Page Description Language) formats. On the other hand, the PDL formats supported by each vendor have evolved independently and are diverse, designed to maximize the characteristics of their printing devices. Some printing devices only accept a specific PDL data format, and sending data in a different format may result in errors or printing of data different from what was instructed.
[0006] Therefore, the use of a mechanism compliant with IPP (Internet Printing Protocol), such as IPP Everywhere (registered trademark) (Non-Patent Document 1), is being considered. In other words, the idea is to provide a common printer driver and print client using IPP. IPP Everywhere is a printing protocol that enables printing on various printing devices regardless of vendor differences.
[0007] For example, Ubuntu® 17.04 includes a mechanism as a default OS feature to send print jobs to printers that support IPP Everywhere®. [Prior art documents] [Patent Documents]
[0008] [Patent Document 1] Japanese Patent Publication No. 2009-301312 [Non-patent literature]
[0009] [Non-Patent Document 1] IPP Everywhere Candidate Standard 5100.14-2013, The Printer Working Group https: / / ftp.pwg.org / pub / pwg / cand idates / cs-ippeve10-20130128-5100.14.pdf [Overview of the project] [Problems that the invention aims to solve]
[0010] However, common printer drivers that comply with printing protocols such as IPP cannot utilize vendor-specific features. Alternatively, they may have the problem of not being able to correctly output vendor-specific PDL data.
[0011] Therefore, the present invention aims to provide an information processing device that can output print commands using a predetermined printing protocol, regardless of the printing format of the printing device, and can also output print commands using a unique printing protocol different from the predetermined printing protocol. [Means for solving the problem]
[0012] The information processing apparatus according to the present invention has the following configuration: a printer driver that generates print commands according to a predetermined printing protocol based on print data acquired from a data generation application; one or more extension modules for generating print commands according to a printing protocol different from the predetermined printing protocol; a print command generation module included in the printer driver; a holding means for holding information indicating one or more modules from the one or more extension modules used to generate print commands according to the other printing protocol; and an output means for outputting print commands according to the other printing protocol, which are obtained by processing the print data acquired by the printer driver with the one or more modules indicated by the information. [Effects of the Invention]
[0013] According to the above configuration, the information processing device uses a common printer driver that can utilize predetermined printing protocols such as IPP, so it can output print commands regardless of the vendor of the printing device. Furthermore, according to the above configuration, the information processing device can output print commands using a unique printing protocol different from the predetermined printing protocol. Therefore, the user of the information processing device can utilize unique printing functions that become available by using the unique printing protocol. [Brief explanation of the drawing]
[0014] [Figure 1] This is a diagram showing an example of a printing system. [Figure 2] This figure shows an example of the hardware configuration of computer 100. [Figure 3(a)] This figure shows an example of the software configuration of computer 100. [Figure 3(b)] This diagram shows the detailed software configuration of the driver for computer 100. [Figure 3(c)] This diagram shows the detailed software configuration of computer 100. [Figure 4]FIG. (a) - (c) is a diagram showing an example of a filter pipeline configuration 400. [Figure 5] FIG. is a flowchart for explaining the installation processing procedure of the vendor extension INF package in the first embodiment. [Figure 6] FIG. is a diagram for explaining an example of the vendor extension INF package. [Figure 7] FIG. is a flowchart for explaining the print instruction generation processing in the first embodiment. **Embodiments for Carrying Out the Invention**
[0015] Hereinafter, embodiments for carrying out the present invention will be described with reference to the drawings. Note that the following embodiments do not limit the invention according to the claims, and not all combinations of the features described in the embodiments are essential for the solution means of the invention.
[0016] <First Embodiment> First, the configuration of the printing system according to this embodiment will be described using FIG. 1. The printing system according to this embodiment includes a computer 100 and printers 200a - c. On the network 300, the computer 100 and the printers 200a - c are connected to be communicable with each other. Note that the form of communication between devices may be communication via a wireless network or communication via a wired network. Also, in the case of communication via a wireless network, it may be wireless communication via an access point compliant with IEEE802.11, or direct wireless communication such as Wi-Fi Direct (registered trademark). Further, in this embodiment, the above configuration is described as an example of the printing system, but it is not limited thereto. It is sufficient that one or more communication devices and a printer are communicably connected via a network.
[0017] In this embodiment, as an example of a printing apparatus that receives a print job and prints an image on a sheet, single-function printers 200a to 200c will be described, but the present invention is not limited thereto. An apparatus such as an MFP (Multi Function Peripheral) having a printing function and a scanning function may also be used.
[0018] In this embodiment, an example in which printers 200a to 200c are manufactured by different vendors will be described. Printers 200a to 200c receive a print job (print command) conforming to the IPP (Internet Printing Protocol) from computer 100, and print an image on a sheet based on the print job.
[0019] In addition, printers 200a to 200c also have a function of receiving and interpreting a print job in a format different from IPP. For example, printer 200a can interpret a print job including PDL (Page Description Language) data conforming to the LIPS (registered trademark, LBP Image Processing System) format. Further, printer 200a can interpret a print job including PDL data conforming to the PCL (registered trademark, Printer Command Language) format. Note that the LIPS format is also called the UFR (registered trademark, Ultra Fast Rendering) format. Printer 200b can interpret a print job including PDL data conforming to the PCL format. On the other hand, it does not support print jobs in the LIPS (UFR) format. Printer 200c is an inkjet printer and can interpret a print job conforming to ESC / P (registered trademark, Epson Standard Code for Printer). However, it does not support print jobs in the PCL format or the LIPS format.
[0020] Thus, different printer vendors (manufacturers) support different types of PDLs. Furthermore, even with the same printer, the supported functions may differ depending on the type of PDL used. Note that the types of PDLs that each printer can interpret are just examples. In addition to PCL, LIPS, and ESC / P, printers may also interpret formats such as RPCS (Registered Trademark, Refined Printing Command Stream), PostScript (Registered Trademark), ART (Advanced Rendering Tools), SPDL2 (Sharp Printer Description Language 2), and formats derived from the above-mentioned PDLs. Each printer is assumed to support at least one of the above-mentioned PDL formats or PDL formats derived from the above-mentioned PDL formats.
[0021] Next, we will describe a computer 100, which is an example of an information processing device. In this embodiment, the computer 100 is shown as a PC (Personal Computer), but it is not limited to this. It may also be a tablet device or a wearable computer that incorporates a head-mounted display and a computer.
[0022] Computer 100 can communicate with printers 200a to 200c on the network 300. Computer 100 can also generate print jobs based on the data to be printed and send them to each printer.
[0023] The hardware configuration of computer 100 will be explained using Figure 2. Figure 2 is a block diagram showing an example of the hardware configuration of computer 100.
[0024] The CPU (Central Processing Unit) 101 is a processor that controls the operation of the entire control unit 120. The control unit 120 has memory, specifically ROM (Read Only Memory) 1021, RAM (Random Access Memory) 1022, and storage 105, and each part is connected by a system bus 107. The control unit 120 also has interfaces (I / F) 103 and 104 for connecting input / output devices, and a communication I / F 106 for communicating with external devices via a network.
[0025] RAM1022 is a volatile memory and is used as a temporary storage area for deploying various control programs stored in the work area, ROM1021, and storage 105.
[0026] ROM 1021 is non-volatile memory and stores the computer's boot program, etc. Storage 105 is a large-capacity non-volatile flash memory or HDD (Hard Disk Drive) compared to RAM 1022. Storage 105 stores the OS (Operating System) 1053 for controlling the entire computer 100, and programs for various applications 1051 that run on OS 1053. It also stores a common printer driver 1054 that generates print jobs in accordance with a predetermined printing protocol such as IPP, and programs for setting applications 1052a to c that cooperate with the common printer driver 1054. Hereinafter, setting applications 1052a to c may be collectively referred to as setting application 1052. The predetermined printing protocol is a printing protocol that defines the format of print commands that can be executed in common by printers 200a to c.
[0027] Various applications, such as application 1051 and configuration application 1052, can be installed on the computer 100 via CD-ROM, USB memory, or network 300.
[0028] The CPU 101 executes the OS program and various application programs deployed on the RAM 1022, and controls the computer 100. In this way, the hardware such as the CPU 101, ROM 1021, RAM 1022, and storage 105 constitute what is known as a computer.
[0029] In this example, the computer 100 is configured such that a single CPU 101 executes each of the processes shown in the flowchart described later, but other configurations are also possible. For example, multiple processors can cooperate to execute each of the processes shown in the flowchart described later.
[0030] The input interface 103 connects the keyboard 108 and the pointing device 109 to the control unit 120. The keyboard 108 and the pointing device 109 function as reception units that receive user instructions. The reception units can detect the selection of display items such as keys displayed on the screen. The output interface 104 connects the monitor 110, which displays information, to the control unit 120. The monitor 110 functions as a display unit that displays information. If the computer 100 is a tablet terminal or the like, information will be displayed to the user and operations will be accepted via a touch panel display that serves as both a reception unit and a display unit. In this case, the user can input desired operation instructions to the computer 100 by performing touch operations using an object such as a finger.
[0031] Communication I / F106 is an interface for communicating with external devices such as printing equipment on network 300, or servers on the cloud.
[0032] <Software configuration of computer 100> Next, an example of the software configuration of the computer 100 in this embodiment will be described using Figures 3(a)(b) and 4.
[0033] First, we will explain the overall picture of data processing by each software module in computer 100 using Figures 3(a) and (b).
[0034] Each module shown in Figure 3(a) operates on OS1053 when not shown. OS1053 is system software that controls the entire computer 100. Here, as an example, we will describe a case where Windows® 10 or later is installed.
[0035] Data generation applications 301 and 302 generate and output print data according to user operations. Data generation applications 301 and 302 are, for example, document creation applications and image generation applications.
[0036] The user operates the data generation application 301 or the data generation application 302 using input devices such as a keyboard 108 or a pointing device 109 such as a touch panel / mouse.
[0037] In this embodiment, the data generation application 301 is a GDI application that performs printing using GDI (Graphics Device Interface), which is a graphics component that generates print images. The data generation application is, for example, a "Win32 / 64 application" or a ".NET application". The data generation application 301 outputs GDI data as print data.
[0038] The data generation application 302 is an extension application that runs on OS1053. The data generation application 302 is, for example, a UWP (Universal Windows Platform) application. UWP applications are distributed through the Windows® Store and run in a different execution environment than the data generation application 301. This different execution environment could be, for example, within a separate sandbox (virtual environment).
[0039] The following example describes how the data generation application 302 generates XPS data as print data, but it is not limited to this and may also generate print data in data formats other than XPS.
[0040] The data generation applications 301 and 302 mentioned above are merely examples; any data generation application will suffice as it outputs print data to the printer driver.
[0041] The conversion module 307 converts GDI drawing data output from the data generation application 301, which is a GDI application, into XPS (XML Paper Specification) data. In this embodiment, the conversion module 307 is configured as a module of OS1053.
[0042] The converted XPS data is spooled into the spool area 306. The spool area 306 also contains XPS data output from the data generation application 302. This embodiment describes an example where the data generation application 302 generates and outputs XPS data, but it is not limited to this. The data generation application 302 may output data in a different data format than XPS data, and the OS 1053 may generate an XPS file in response to drawing commands from the data generation application 302.
[0043] The common printer driver 1054 and the extended printer driver 1055 generate print jobs (print commands) based on the print data held in the spool area 306.
[0044] The common printer driver 1054 is a printer driver that generates print commands according to a predetermined print protocol based on print data obtained from application 1051. As shown in Figure 3(b), the common printer driver 1054 has a print command generation unit (rendering filter) 312. The print command generation unit 312 is a print command generation module that converts XPS format data into print commands according to IPP. IPP is a print protocol that can be interpreted by all printers 200a, 200b, and 200c from different vendors. The common printer driver 1054 may have multiple print generation units. Furthermore, the common printer driver 1054 may be a class driver incorporated as a standard function of OS 1053, or it may be a universal printer driver separately installed by the user on computer 100.
[0045] As shown in Figure 3(b), the extended printer driver 1055 also has print command generation units (rendering filters) 1 to 6 that convert XPS format data into print jobs according to the printing protocol specific to each printer. The print command (LIPS) generation module group, print command (PCL) generation module group, and print command (ESC / P) generation module group shown in Figure 3(b) may each be configured as an independent extended printer driver 1055. Alternatively, they may be configured as a single extended printer driver 1055 that includes multiple module groups from the print command (LIPS) generation module group, print command (PCL) generation module group, and print command (ESC / P) generation module group.
[0046] Print command generation units 1 to 6 are extension modules for generating print commands that conform to a print protocol other than a predetermined print protocol (IPP). The other print protocol is a print command format that can be executed by one of the multiple printers 200a to c, but cannot be executed by the other printer. In the example in Figure 3(b), print command generation units 1 to 2 are used to generate print jobs conforming to a specific print protocol available to printer 200a (e.g., LIPS(UFR) format). Print command generation units 3 to 5 are used to generate print jobs conforming to a specific print protocol available to printer 200b (e.g., PCL format). Furthermore, print command generation unit 6 is used to generate print jobs conforming to a specific print protocol available to printer 200c (e.g., ESC / P format).
[0047] The filter pipeline configuration 400 indicates the call order of the modules used to generate print jobs from one or more print command generation units included in the common printer driver 1054 and one or more print command generation units included in the extended printer driver 1055.
[0048] Figure 3(b) shows an example of storing separate filter pipeline configurations 400 for LIPS-compatible models, PCL-compatible models, and ESC / P-compatible models. However, it is also possible to store a filter pipeline configuration 400 for only one PDL. The filter pipeline configuration 400 is stored in a storage medium such as storage 105 or ROM 1021.
[0049] The XPS data acquired from the spool area 306 is processed by one or more print command control units identified by the filter pipeline configuration 400.
[0050] For example, by specifying a print command generation unit to be processed in the filter pipeline configuration 400, the computer 100 can output a print job that corresponds to a vendor-specific print protocol.
[0051] For example, if the filter pipeline configuration 400 is set to process data in the print command generation unit 312 first, and then in the print command generation units 1 and 2, the job generation flow is as follows: The print command generation unit 312 generates print commands in accordance with IPP based on the XPS spool file. It also generates print attributes in accordance with IPP based on standard setting data, adds them to the print commands, and generates a print job. This job is input to the print command generation unit 1. The data processed in the print command generation unit 2 is input to the print command generation unit 2. The print command generation unit 2 generates a print job in accordance with LIPS (UFR). In this way, a print job in accordance with the printer 200a's specific printing protocol (LIPS (UFR) format) can be generated.
[0052] Returning to the explanation of Figure 3(a), the print jobs generated by the common printer driver 1054 and the extended printer driver 1055 are output to the print manager 318.
[0053] Furthermore, the common printer driver 1054 and the extended printer driver 1055 accept print settings from the print settings application 1052a to c.
[0054] Print setting applications 1052a to c are print setting applications for performing vendor-specific print settings. In this embodiment, each of the print setting applications 1052a to c is a print setting application for performing print settings specific to printers 200a to c.
[0055] Print settings include, for example, settings for using stapleless binding, which binds multiple printed pages together without using staples, and settings for using box printing, which prints data stored in a designated storage area.
[0056] The common printer driver 1054 and the extended printer driver 1055 then output the print job, including the received print settings and the generated print command, to the print manager 318.
[0057] The print manager 318 acquires capability information of the printer 200 and controls the transmission of print jobs. The print manager 318 transmits print jobs received from the common printer driver 1054 or the extended printer driver 1055 to the target printer 200 via the communication unit 319.
[0058] In this manner, the computer 100 can generate a print job based on the print data generated by the application 1051 and output it to the printer 200.
[0059] With the above configuration, the print command generation unit 312 of the common printer driver 1054 can be used to generate print jobs that the printer 200 can interpret regardless of the vendor. Furthermore, by using the print command generation units 1 to 6 of the extended printer driver 1055, print jobs that match vendor-specific printing protocols can be generated.
[0060] Next, the details of data processing by each software module in computer 100 will be explained using Figure 3(c). Explanations of the content described using Figures 3(a) and (b) will be omitted.
[0061] Figure 3(c) shows an example of the software configuration of computer 100 in this embodiment.
[0062] OS1053 provides a printing architecture 10531 for printing using a printer driver. The printing architecture 10531 is a so-called V4 printing architecture that uses XPS format data as spool data and converts this spool data into print data (PDL) by the printer driver.
[0063] Computer 100 has a common printer driver 1054 installed that supports printers from multiple vendors. In this embodiment, the common printer driver 1054 processes print data according to a predetermined printing protocol (e.g., IPP). The common printer driver 1054 may be a class driver built in as a standard function of OS 1053, or it may be a universal printer driver separately installed by the user on computer 100.
[0064] The printing architecture 10531 includes a conversion module 307, a common printer driver 1054, a print manager 318, and a communication unit 319. It is also possible to install a printer driver different from the common printer driver 1054 (for example, a model-specific printer driver provided by a vendor).
[0065] <Printing process using common printer driver 1054> First, we will explain the printing process using the common printer driver 1054. The data generation application 301 and the data generation application 302 work together with the printing architecture 10531 to generate print data (for example, documents, images, etc.).
[0066] When a print command is issued via application 1051, OS 1053 calls the standard print settings unit 308 of the common printer driver 1054. The standard print settings unit 308 refers to the definition file corresponding to the selected printer from the definition files 309 of the standard print function definition files. Based on the referenced definition file, it also generates standard setting data (DEVMODE 303 and PrintTicket 304) that indicates the current print settings and PrintCapabities that indicates the printing capabilities of the selected printer.
[0067] The default settings data can be modified as needed via application 1051 or through the user interface (screen for changing print settings) displayed by the operating system.
[0068] The definition files included in the definition file group 309 shown in Figure 3(c) indicate the capabilities of the printer, generated based on attribute information obtained from the printer during IPP printer discovery, etc. The definition file group 309 stores separate files for each printer.
[0069] Next, we will explain how to generate a definition file. If a definition file corresponding to the selected printer is not stored in the storage, the common printer driver 1054 queries the printer for capability information. The common printer driver 1054 queries the printer for capability information via the print manager 318 and the communication unit 319.
[0070] In addition to the print job control functions described later, the print manager 318 can search for IPP-compatible printers and retrieve printer capabilities. Specifically, printer capabilities are retrieved using the Get-Printer-Attributes Operations defined in RFC2911.
[0071] First, the print manager 318 sends a Get-Printer-Attributes Request to the printer 200. In response to this request, attribute information of the printer 200 is obtained. The printer capability information obtained through the printer attribute request operation is, for example, information on the capabilities of standard print settings, such as whether "double-sided printing" and "color printing" are possible. Here, the capabilities (attributes) that can be obtained through the printer attribute request operation are support information regarding attributes defined in IPP. Therefore, vendor-specific function information (such as stapleless binding function or box printing function) cannot be obtained through the IPP printer attribute request operation. The obtained attribute information is transferred to the standard print setting unit 308. The standard print setting unit 308 generates a definition file based on the attribute information obtained using IPP and stores it in the storage 105.
[0072] Application 1051 (data generation applications 301 and 302) acquires setting data in PrintTicket format or DEVMODE format generated by the standard print setting unit 308. Data generation application 301 uses binary DEVMODE303 as standard setting data indicating the current print settings. Data generation application 302 uses PrintTicket304, which is written in XML, a markup language. DEVMODE303 or PrintTicket304 is standard setting data that holds the print settings to be reflected in print jobs compliant with IPP. However, DEVMODE303 and PrintTicket304 are just examples of standard setting data and are not limited to these.
[0073] When the OS 1053 or application 1051 detects that a print command has been issued by the user, it generates an XPS spool file. The generated XPS spool file is passed to the print command generation unit 312. The print command generation unit 312 renders the received XPS spool file and converts it into PDL data compliant with IPP. PDL data compliant with IPP is, for example, data in PDF (Portable Document Format) or PWG-Raster format.
[0074] Furthermore, the print command generation unit 312 generates print attribute information in accordance with IPP based on the settings specified in PrintTicket 304 included in the XPS spool file. If the PDL data and PrintTicket 304 in accordance with IPP can be correctly understood and the print job can be output correctly, they may be sent directly to the printer 200. In other words, the common printer driver 1054 may send the print job processed by the print command generation unit 312 to the print manager 318, and then send it to the printer 200 via the communication unit 319.
[0075] <Printing process using extended printer driver 1055> For printer 200 that cannot correctly understand PDL data conforming to IPP and therefore cannot output the print job correctly, an extended printer driver 1055 is required to generate a print job that printer 200 can output correctly.
[0076] The extended printer driver 1055 according to this embodiment converts PDL data conforming to IPP into vendor-specific PDL that can be correctly output by the destination printer 200.
[0077] The filter pipeline configuration 400 is a manual that the common printer driver 1054 and the extended printer driver 1055 refer to, and it determines which print command generation unit (hereinafter sometimes referred to as the rendering filter) to use and how.
[0078] A rendering filter is the smallest unit of the printing process. Common printer drivers and extended printer drivers have one or more rendering filters.
[0079] Figures 4(a), (b), and (c) illustrate the filter pipeline configuration 400. These are all XML files conforming to the rules defined in the printing architecture, defining the rendering filter call order and the interface, input, and output formats. The common printer driver 1054 and extended printer driver 1055, which call the rendering filters, are configured to call them in the defined order and using the defined interfaces.
[0080] The file 400a shown in Figure 4(a) illustrates an example of a filter pipeline configuration 400. File 400a defines three rendering filters (print command generation units).
[0081] In other words, it is defined to first call the print command generation unit 312 of the common printer driver 1054, then call the print command generation unit 1 of the extended printer driver 1055, and then call the print command generation unit 2 of the extended printer driver 1055.
[0082] In Figure 4(a), the print command generation unit 312 of the common printer driver 1054 is represented as “XPS to PDF”. Also in Figure 4(a), the print command generation unit 1 of the extended printer driver 1055 is represented as “Vendor Renderer PDLA”. Furthermore, in Figure 4(a), the print command generation unit 2 of the extended printer driver 1055 is represented as “Vendor Renderer PDLB”.
[0083] The extended printer driver 1055 calls the filters in the order specified in the filter pipeline configuration 400 and finally sends the generated PDL data to the print manager 318. That is, once all the filter processing defined in the filter pipeline configuration 400a is complete, the extended printer driver 1055 sends the generated vendor-specific PDL and extended print setting information as a print job to the printer 200.
[0084] Upon receiving the PDL data, the print manager 318 generates a print job and registers the generated print job in a queue. When the printer 200 is ready to print, it sends the print jobs via the communication unit 319 in the order they were registered in the queue.
[0085] The configuration application 1052 provides functions such as displaying a preview of print data and displaying a user interface that prompts changes to print settings. The configuration application 1052 is an application that runs on a UWP platform separate from the print architecture 10531. This application is based on printing using the IPP-based common printer driver 1054, but is designed to allow for more flexible use of the functions of the printer 200 as needed.
[0086] The configuration application 1052 operates in a sandboxed UWP execution environment. Therefore, even if the application hangs or encounters an error, the impact on the overall system can be minimized. In this embodiment, it is assumed that the extended print settings unit 10522 of the configuration application 1052a is launched to add extended print settings to the print job, but it is not always necessary to add extended print settings.
[0087] This section provides an example where configuration application 1052a is installed as the configuration application for printer 200a. It also provides an example where configuration application 1052b is installed as the configuration application for printer 200b. Furthermore, it provides an example where 1052c is installed as the configuration application for printer 200c.
[0088] The print command generation unit 312 determines whether or not to launch the setting application 1052 based on the installation status of the extended application and the settings stored in the setting storage unit 320.
[0089] The configuration application 1052 includes a startup application unit 10521, an extended print settings unit 10522, and a communication unit 10523.
[0090] The startup application unit 10521 is a module that is called when printing is performed and controls the startup and operation of the extended print settings unit 10522 and the communication unit 10523.
[0091] The extended print settings unit 10522 displays an extended user interface on the monitor 110 that allows for more detailed print settings compared to print settings compliant with IPP. This extended user interface is displayed on the monitor 110 when the user issues a print setting start command or a print preview command in application 1051.
[0092] The communication unit 10523 provides functions for each module of the configuration application 1052 to communicate with the printer 200. The communication unit 10523 acquires information about the printer 200 using a specific communication method or a specific control method.
[0093] Specific communication methods include, for example, the WSD (Web Services for Devices) protocol and SNMP (Simple Network Management Protocol). Alternatively, vendor-specific protocols may be used. Printer information can also be obtained using control commands defined in job control languages or printer control languages. For example, information can be requested from the printer using commands defined in PJL (Printer Job Language), PostScript, or CPCA (Common Peripheral Controlling Architecture). Furthermore, information can also be obtained from the printer using NPAP (Network Printing Alliance Protocol).
[0094] The print command generation units 1 to 6 of the extended printer driver 1055 communicate with the setting application 1052 as needed to obtain extended print settings. Based on the obtained extended print settings, they can be reflected in the vendor's proprietary PDL data.
[0095] <How to install the extended printer driver 1055> Next, the installation method for the extended printer driver 1055 will be explained using the flowchart in Figure 5. The process shown in Figure 5 is achieved when the CPU 101 reads the programs for implementing each control module stored in the ROM 1021 or storage 105 into the RAM 1022 and executes them.
[0096] First, let's explain the installation package for the Extended Printer Driver 1055. The installation package for the Extended Printer Driver 1055 utilizes the mechanism of Extended INF files. An Extended INF file is a file that conforms to the "Extension INF" defined by Microsoft's Windows. An Extended INF file is prepared that defines the same IDs as the HWID and COID listed in the base INF file, and the modules to be added to the base package are defined there. By installing using the Extended INF file, the modules listed in the base INF file will be overwritten or added during installation.
[0097] Figure 6 shows an example of driver package 600 for installing the LIPS-compatible extended printer driver 1055. Driver package 600 includes an extended INF file 6000, a filter pipeline configuration file, and a set of modules for generating print commands.
[0098] The vendor-extended INF file 6000 indicates the HWID and COID of the corresponding base INF file. The base INF file is the INF file for the common printer driver 1054.
[0099] This document describes how to install the extended printer driver 1055 using an extended INF file. First, OS1053 determines whether the INF file to be installed is an extended INF file (step S601).
[0100] If it is determined that it is not an extended INF file (No. in step S601), perform a normal INF installation (step S602).
[0101] If it is determined to be an extended INF file (Yes in step S601), check the HWID and COID. Search for a base INF file that matches the HWID and COID listed in the extended INF file (step S603).
[0102] If the search results show that no basic INF file defining HWID and COID exists (No. in step S603), the installation process will terminate.
[0103] On the other hand, if the search reveals that a basic INF file defining HWID and COID exists (Yes in step S603), the basic INF file's module is extended with the modules of the print command generation units 1 and 2 (step S604).
[0104] In this embodiment, the filter pipeline configuration file located in package 600 is placed in a location accessible by the common printer driver. If a filter pipeline configuration 400 already exists, it will be overwritten. Alternatively, the new filter pipeline configuration 400 may be stored by adding it to the existing filter pipeline configuration 400 without overwriting it.
[0105] Furthermore, the print command generation units 1 and 2 are placed in a location accessible by the extended printer driver. If a vendor extended print processing module with the same name already exists at the location, its file is overwritten.
[0106] By following the above steps, the extended printer driver 1055 can be installed on computer 100.
[0107] The example in Figure 6 illustrates the installation of the LIPS-compatible extended printer driver 1055, but it is also possible to install the extended printer driver 1055 that supports multiple PDLs, such as LIPS, PCL, and ESC / P.
[0108] <Print Job Generation Flow> The procedure for generating a print job by the computer 100 according to this embodiment will be explained with reference to Figure 7. Figure 7 is a flowchart showing the control of the computer 100. Each operation (step) shown in the flowchart of Figure 7 is realized by the CPU 101 reading the program for realizing each control module stored in the ROM 1021 or storage 105 into the RAM 1022 and executing it. Each process shown in the flowchart is realized through the cooperation of the modules and software components of the application 1051, OS 1053, common printer driver 1054, and extended printer driver 1055. In addition, some processes such as data transmission and information input / output are realized in cooperation with each I / F.
[0109] The flowchart in Figure 7 shows the process of generating a print job using the previously installed extended printer driver 1055, because the specified printer is one that cannot be supported by the common printer driver 1054 alone. These processes are executed in response to receiving a print command from the user.
[0110] In step S701, application 1051 receives a print job creation command from the user. For example, application 1051 receives a print job creation command when the print button key is pressed.
[0111] In step S702, application 1051 outputs drawing data. In step S703, OS 1053 generates an XPS spool file based on the output drawing data. In the case of printing from data generation application 301, OS 1053 generates the XPS spool file using conversion module 307.
[0112] Next, OS1053 determines whether the extended printing module is installed on computer 100 (S704). For example, OS1053 can determine that the extended printing module is installed on computer 100 if the extended INF file 6000 is installed. In the example in Figure 6, the extended printing module refers to print command generation units 1 and 2. Alternatively, in the example in Figure 3(b), it refers to print command generation units 1 to 6.
[0113] If it is determined that the extended printing module is not installed (No in S704), the print command generation unit 312 of the common driver 1054 processes the XPS spool file and generates a print command according to IPP (S705).
[0114] In step S705, the print command generation unit 312 converts the XPS spool file into a PDL that conforms to IPP. It also generates IPP-compliant print settings (print attributes) based on standard settings that indicate the print settings to be set for the job.
[0115] On the other hand, if it is determined that an extended printing module is installed (YES in S704), the printing architecture 10531 analyzes the print job to identify the printer 200 that will execute the job (S706).
[0116] Next, the printing architecture 10531 performs an identification process to identify the filter pipeline configuration corresponding to the identification information of the printer 200 identified in step S706 (S707). The printer identification information and the filter pipeline configuration do not have to be directly associated. For example, they may be indirectly associated, such as identifying the printing protocol to be used based on the printer identification information, and then identifying the filter pipeline configuration for generating print commands corresponding to the identified printing protocol. For example, if the specified printer 200 supports LIPS, the printing architecture 10531 identifies a filter pipeline configuration that indicates one or more print command generation units to be used to generate print commands in accordance with LIPS. In this way, the filter pipeline configuration to be referenced is identified according to the information indicating the format of the print data used by the printing device for the printing process.
[0117] Next, in step S707, the printing architecture 10531 determines whether or not the filter pipeline configuration 400 to be referenced has been identified (S708). If the filter pipeline configuration 400 to be referenced has not been identified, the printing architecture 10531 proceeds to step S705 and generates a print command using a common driver. Cases in which the filter pipeline configuration 400 to be referenced has not been identified include, for example, when the computer 100 does not have a filter pipeline configuration 400 corresponding to the print protocol specific to the printer 200 that performs the printing. In such cases, when the computer 100 does not have a filter pipeline configuration 400 for generating a print command according to the format of the print data used by the printing device that performs the printing, the computer 100 outputs a print command according to a predetermined protocol.
[0118] If a filter pipeline configuration 400 to reference cannot be identified, a notification may be issued indicating that printing will not be performed using the printing protocol specific to the printer 200 specified as the print destination. Alternatively, a notification may be issued indicating that printing will be performed using a common printing protocol (e.g., IPP).
[0119] On the other hand, if the filter pipeline configuration to be referenced is identified in step S707, the print architecture 10531 generates a print command according to the identified filter pipeline configuration (S709). That is, it generates a print command using one or more print command generation units specified by the identified filter pipeline configuration in the specified order.
[0120] For example, when referring to the filter pipeline configuration 400a shown in Figure 4(a), the print data is processed in the following order: print command generation unit 312 of the common printer driver 1054, print command generation unit 1 of the extended printer driver 1055, and print command generation unit 2. Here, print command generation unit 1 corresponds to the Vendor Renderer PDLA in Figure 4(a). Also, print command unit 2 corresponds to the Vendor Renderer PDLB in Figure 4(a).
[0121] First, the print command generation unit 312 generates print data in accordance with the IPP. The print command generation unit 312 also generates print settings in accordance with the IPP based on standard settings that indicate the print settings to be set for the print job.
[0122] Next, the print data and print settings generated by the print command generation unit 312 are output to the print command generation unit 1. The print command generation units 1 and 2 can generate print commands according to other print protocols based on the print commands generated by the common printer driver 1054 according to a predetermined print protocol (e.g., IPP). For example, the print command generation units 1 and 2 generate LIPS-compatible print commands from the print data received from the common printer driver 1054.
[0123] Furthermore, the print command generation unit 1 and the print command generation unit 2 obtain extended print settings from the setting application 1052a corresponding to the specified printer 200. Based on the standard settings received from the print command generation unit 312 and the extended print settings obtained from the setting application 1052a, the print command generation unit 1 and the print command generation unit 2 generate print settings specific to the specified printer 200.
[0124] The print settings are then output to the print manager 318 along with the generated print command. In the example above, an example in which the print command generation unit 1, the print command generation unit 2, and the setting application 1052a are used was described, but depending on the specified printer 200, other print command generation units and setting applications 1052 may be used.
[0125] When a print command is generated in step S705 or step S709, the print manager 318 generates a print job based on the generated print command and print settings. The print manager 318 then sends the generated print job to the specified printer 200 via the communication unit 319 (S710).
[0126] In this way, the print manager 318 outputs a print command in accordance with a unique print protocol obtained by processing the print data acquired by the common printer driver 1054 with one or more modules indicated by the filter pipeline configuration 400. In this manner, the print manager 318 outputs either a first print command or a second print command according to information indicating the format of the print data used by the printing device performing the printing process. The first print command is a print command compliant with a predetermined protocol (e.g., IPP), and the second print command is a print command compliant with a print protocol other than the predetermined print protocol.
[0127] When outputting the print command generated in step S705, a print command compliant with IPP is output. In this way, the print manager 318 can output a first print command in accordance with a predetermined print protocol (e.g., IPP) based on the print data obtained from the application 1051.
[0128] When outputting the print command generated in step S709, it is possible to output a print command according to a different print protocol than the predetermined print protocol, based on the print data obtained from application 1051.
[0129] According to the above embodiment, the computer 100 uses a common printer driver that can utilize a predetermined printing protocol such as IPP, and can output print commands regardless of the vendor of the printing device. Furthermore, according to the above embodiment, the computer 100 can output print commands using a unique printing protocol different from the predetermined printing protocol. Therefore, the user can utilize unique printing functions that become available by using a unique printing protocol.
[0130] <Second Embodiment> In the first embodiment, an example was described in which a PDL conforming to IPP is generated in the common printer driver 1054, and then converted to a vendor-specific PDL using the extended printer driver 1055 to generate a print command. However, the invention is not limited to this example. Print commands may also be generated by calling the print command generation function of the extended printer driver 1055 without using the print command generation unit 312 of the common printer driver 1054 as an intermediary.
[0131] The hardware configuration, software configuration, and processing procedure according to this embodiment are the same as those described in Embodiment 1, and therefore will not be described. However, the extended printer driver 1055 according to this embodiment has the function of interpreting XPS data created by the application and converting it into vendor-specific PDL data, rather than PDL compliant with IPP.
[0132] When application 1051 receives a print start command from the user, it passes the print settings and XPS spool file to the common printer driver 1054.
[0133] Here, we will describe an example in which filter pipeline configuration 400b shown in Figure 4(b) is selected as the filter pipeline configuration to be referenced in step S707 of Figure 7.
[0134] The filter pipeline configuration 400b defines only the print command generation unit 1 and the print command generation unit 2. Print command generation unit 1 corresponds to the Vender Renderer PDLA in Figure 4(b). Print command unit 2 corresponds to the Vender Renderer PDLB in Figure 4(b).
[0135] The common printer driver 1054, following the filter pipeline configuration 400b, passes the acquired print settings and XPS spool file to the extended printer driver 1055 without calling the print command generation unit 312.
[0136] In step S709 of Figure 7, the extended printer driver 1055 generates print commands based on the XPS spool file using the print command generation unit 1 and the print command generation unit 2 in accordance with the filter pipeline configuration 400b. The extended printer driver 1055 also generates print settings specific to the specified printer 200 based on the print settings obtained from the common printer driver 1054 and the extended print settings obtained from the extended application 1052a.
[0137] When a print command is generated in step S709, the print manager 318 generates a print job based on the generated print command and print settings. The print manager 318 then sends the generated print job to the specified printer 200 via the communication unit 319 (S710).
[0138] In this embodiment, a print job containing vendor-specific PDLs is created without calling the print command generation unit 312 of the common printer driver that conforms to IPP. That is, the extended printer driver 1055 can generate print commands according to a print protocol different from a predetermined print protocol (e.g., IPP) without the common printer driver 1054 generating print commands. The extended printer driver 1055 generates print commands according to the other print protocol using the print data output from the application 1051.
[0139] The print manager 318 can output print commands generated by one or more extension modules that follow other print protocols, without the common printer driver 1054 generating print commands according to a predetermined print protocol. Therefore, compared to using the common printer driver, the amount of processing required to generate print commands can be reduced, and print commands can be generated more efficiently.
[0140] <Third Embodiment> In the first and second embodiments, examples were described in which a print command is generated by converting to a vendor-specific PDL using an extended printer driver 1055 installed on the computer 100, but the invention is not limited to this. A print command may also be generated using a print command generation unit of an external device (for example, a cloud server) connected to the computer 100 via a network.
[0141] The hardware configuration, software configuration, and processing procedure according to this embodiment are the same as those described in Embodiment 1, so their description will be omitted.
[0142] However, in this embodiment, the communication unit 319 communicates with an external server connected to the client computer via a network, in accordance with instructions from the extended printer driver 1055. In this embodiment, the extended printer driver 1055 generates print commands using the print command generation unit 8 located on the external device.
[0143] Here, we will describe an example in which filter pipeline configuration 400c, shown in Figure 4(c), is selected as the filter pipeline configuration to be referenced in step S707 of Figure 7.
[0144] Print command generation unit 1 corresponds to Vender Renderer PDLA in Figure 4(c). Print command generation unit 2 corresponds to Vender Renderer PDLB in Figure 4(c). Furthermore, print command generation unit 8 corresponds to Vender Renderer PDLC in Figure 4(c).
[0145] The filter pipeline configuration 400c defines a URL for using the print command generation unit 8 located on an external device. The extended printer driver 1055, via the communication unit 319, calls the print command generation unit 8 in the cloud area according to this definition and generates a print command. In the example in Figure 4(c), the extended printer driver 1055 processes the data using the print command generation unit 1 and the print command generation unit 2, and then sends the processed data to the print command generation unit 8. The print data (print command) processed by the print command generation unit 8 is then sent to the print manager 318.
[0146] The print manager 318 generates a print job based on the generated print command and print settings. The print manager 318 then sends the generated print job to the specified printer 200 via the communication unit 319 (S710).
[0147] The above example describes how to generate print commands using print command generation units 1, 2, and 8, but it is not limited to this. Processing may be performed by print command generation unit 312 before processing by print command generation unit 1. Alternatively, print commands may be generated from XPS spool data using only print command generation unit 8.
[0148] In this way, the print manager 318 according to this embodiment outputs a print command in accordance with another printing protocol, which is obtained when an expansion module of an external device processes the print data acquired by the common printer driver 1054. The expansion module of the external device is an expansion module for generating print commands in accordance with another printing protocol different from a predetermined printing protocol.
[0149] According to this embodiment, since print commands are generated using a print command generation unit on an external device such as the cloud, scalability can be further improved compared to the case where only the print command generation unit installed on the computer 100 is used. In other words, it becomes possible to generate print commands written in types of PDL that cannot be generated by the computer 100 alone.
[0150] <Other Embodiments> The present invention can also be realized by supplying a program that implements one or more of the functions of the above-described embodiments to a system or device via a network or storage medium, and by having one or more processors in the computer of that system or device read and execute the program. It can also be realized by a circuit (e.g., an ASIC) that implements one or more functions. [Explanation of symbols]
[0151] 100 client computers 200 printers 101 CPU 1054 Common Printer Driver 1055 Extended Printer Driver 400 Filter Pipeline Configuration
Claims
[Claim 1] A printer driver that generates print commands according to a predetermined print protocol based on print data obtained from a data generation application, One or more extension modules for generating print commands according to a print protocol different from the predetermined print protocol, A print command generation module included in the printer driver, and a holding means for holding information indicating one or more modules from among the one or more extension modules used to generate print commands according to the other printing protocol, Output means that outputs a print command according to the other print protocol, obtained by processing the print data acquired by the printer driver by the one or more modules indicated by the information. An information processing device characterized by having the following features.
Citation Information
Patent Citations
Printer driver
JP2009301312A