Program, information processing device, and information processing device control method
The information processing device addresses printer driver interoperability issues by generating print commands in universal and vendor-specific protocols, ensuring compatibility and access to unique printing functions across different devices.
Patent Information
- Application Number
- JP2025105815
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-06-23
- Publication Date
- 2025-08-22
- Estimated Expiration
- 2038-09-14
AI Technical Summary
Existing printer drivers struggle to utilize vendor-specific functions and output data correctly in diverse PDL formats, limiting interoperability across different printing devices from various vendors.
An information processing device equipped with a printer driver that generates print commands using a predetermined protocol (like IPP) and additional extension modules for converting data into vendor-specific protocols, enabling output regardless of device format.
The device can output print commands using both universal and vendor-specific protocols, allowing users to access unique printing functions and ensuring compatibility across diverse printing devices.
Smart Images

Figure 2025123504000001_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 technology]
[0002] A commonly known configuration is to use a printer driver to send a print job to a printing device. An operating system (OS), which is the basic software, is installed on an information processing device, and the printer driver is configured according to the print architecture defined by the OS and runs when called by the OS. Vendors that provide printing devices provide printer drivers that conform to the OS specifications. The OS and printer driver work together to realize the function of printing using the destination printing device.
[0003] Incidentally, an architecture called the V4 printer driver has emerged as a printer driver for use with Microsoft® Windows® 8.1 or later versions as the operating system. With a V4 printer driver, vendors of printing devices can provide dedicated applications to support the printer driver's functions. These applications are called UWP Device Apps (Universal Windows Platform Device Apps). UWP Device Apps can be obtained from store applications (Windows Store applications or WSA) and installed on information processing devices. Furthermore, a V4 printer driver can be linked to a PrinterExtension, a print setting application for configuring vendor-specific print settings.
[0004] Conventionally, a printer driver called a universal printer driver is known as a printer driver for controlling multiple types of printing devices with different functions (Patent Document 1). This printer driver can process rendering data appropriate for each individual printing device model and generate a print job.
[0005] Universal printer drivers such as those disclosed in Patent Document 1 are generally provided by each vendor. Therefore, a single universal printer driver can support multiple types of printing devices provided by the same vendor. However, it has been difficult to support printing devices provided by different vendors with a single universal printer driver. A universal printer driver supports one, or at most two, types of PDL (Page Description Language) format. Meanwhile, the PDL formats supported by each vendor have evolved independently and are diverse, designed to maximize the unique characteristics of the printing device. Some printing devices only accept data in a specific PDL format. Sending data in a different format can result in errors or printing data that differs from the instructions.
[0006] Therefore, the use of a system compliant with the Internet Printing Protocol (IPP), such as IPP Everywhere (registered trademark) (Non-Patent Document 1), is being considered. In other words, it is being considered to provide a common printer driver and print client that uses IPP. IPP Everywhere is a printing protocol that enables printing on a variety of printing devices, regardless of differences in vendors, etc.
[0007] For example, Ubuntu (registered trademark) 17.04 includes, as a default function of the OS, a mechanism for sending print jobs to a printing device that supports IPP Everywhere (registered trademark). [Prior art documents] [Patent documents]
[0008] [Patent Document 1] Japanese Patent Application Laid-Open 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 / candidates / cs-ippeve10-20130128-5100.14.pdf Summary of the Invention [Problem to be solved by the invention]
[0010] However, common printer drivers that comply with printing protocols such as IPP cannot utilize functions provided independently by vendors, or they cannot correctly output data in vendor-specific PDLs.
[0011] Therefore, the present invention aims to provide an information processing device that is capable of outputting print commands using a specified print protocol regardless of differences in the print format of the printing device, and that is capable of outputting print commands using a unique print protocol that is different from the specified print protocol. [Means for solving the problem]
[0012] An information processing device according to the present invention has the following configuration: a printer driver that generates print commands in accordance with a predetermined print protocol based on print data acquired from a data generation application, one or more extension modules for generating print commands in accordance with another print protocol different from the predetermined print protocol, a print command generation module included in the printer driver, storage means for storing information indicating one or more modules among the one or more extension modules to be used to generate print commands in accordance with the other print protocol, and output means for outputting print commands in accordance with the other print protocol obtained by processing print data acquired by the printer driver by 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 universal printer driver that can use a predetermined printing protocol such as IPP, so it can output print commands regardless of the printing device vendor. Furthermore, according to the above configuration, the information processing device can output print commands using a unique printing protocol that is different from the predetermined printing protocol. Therefore, the user of the information processing device can use unique printing functions that become available by using the unique printing protocol. [Brief explanation of the drawings]
[0014] [Figure 1] FIG. 1 illustrates an example of a printing system. [Figure 2] FIG. 2 is a diagram illustrating an example of a hardware configuration of a computer 100. [Figure 3(a)] FIG. 2 is a diagram illustrating an example of the software configuration of a computer 100. [Figure 3(b)] FIG. 2 is a diagram showing details of the software configuration of a driver of the computer 100. [Figure 3(c)] FIG. 2 is a diagram illustrating the detailed software configuration of a computer 100. [Figure 4]4A to 4C are diagrams illustrating an example of a filter pipeline configuration 400. [Figure 5] 10 is a flowchart illustrating a procedure for installing a vendor extension INF package according to the first embodiment. [Figure 6] FIG. 10 is a diagram illustrating an example of a vendor extension INF package. [Figure 7] 10 is a flowchart illustrating a print command generation process according to the first embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0015] The following describes embodiments of the present invention with reference to the drawings. Note that the following embodiments do not limit the scope of the invention as claimed, and not all of the combinations of features described in the embodiments are necessarily essential to the solution of the invention.
[0016] First Embodiment First, the configuration of a 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. The computer 100 and printers 200a-c are connected to a network 300 so that they can communicate with each other. Note that communication between devices may be via a wireless network or via a wired network. In the case of communication via a wireless network, wireless communication may be via an access point conforming to IEEE802.11, or direct wireless communication such as Wi-Fi Direct (registered trademark). In this embodiment, the above configuration will be described as an example of a printing system, but the present invention is not limited to this. It is sufficient that one or more communication devices and printers are connected so that they can communicate with each other via a network.
[0017] In this embodiment, the single-function printers 200a to 200c are described as an example of a printing device that receives a print job and prints an image on a sheet, but the printing device is not limited to this and may be a device such as an MFP (Multi Function Peripheral) that has a printing function and a scanning function.
[0018] In this embodiment, an example will be described in which the printers 200a to 200c are manufactured by different vendors. The printers 200a to 200c receive a print job (print command) conforming to the Internet Printing Protocol (IPP) from the computer 100, and print an image on a sheet based on the print job.
[0019] Printers 200a-c also have the ability to receive and interpret print jobs in formats other than IPP. For example, printer 200a can interpret print jobs containing PDL (Page Description Language) data that conforms to the LIPS (LBP Image Processing System, registered trademark) format. Printer 200a can also interpret print jobs containing PDL data that conforms to the PCL (Printer Command Language, registered trademark) format. The LIPS format is also known as the UFR (Ultra Fast Rendering, registered trademark) format. Printer 200b can interpret print jobs containing PDL data that conforms to the PCL format. However, it does not support print jobs in the LIPS (UFR) format. Printer 200c is an inkjet printer and can interpret print jobs that conform to the ESC / P (Epson Standard Code for Printer, registered trademark) format. However, it does not support print jobs in the PCL or LIPS formats.
[0020] As such, different printer vendors (manufacturers) support different types of PDLs. Even the same printer may support different functions depending on the type of PDL used. The types of PDLs that each printer can interpret are merely examples. PDL formats that a printer can interpret may include PCL, LIPS, ESC / P, RPCS (registered trademark, Refined Printing Command Stream), PostScript (registered trademark), ART (Advanced Rendering Tools), and other formats. SPDL2 (Sharp Printer Description Language 2) and other formats derived from the above PDLs are also acceptable. Each printer is assumed to support at least one of the above PDL formats or PDL formats derived from the above PDL formats.
[0021] Next, a computer 100, which is an example of an information processing device, will be described. In this embodiment, the computer 100 is a PC (Personal Computer), but is not limited to this. The computer 100 may be a tablet terminal, a wearable computer incorporating a head-mounted display, or other terminal.
[0022] The computer 100 can communicate with the printers 200a to 200c on the network 300. The computer 100 can also generate a print job based on data to be printed and send it to each printer.
[0023] The hardware configuration of the computer 100 will be described with reference to Fig. 2. Fig. 2 is a block diagram showing an example of the hardware configuration of the computer 100.
[0024] The CPU (Central Processing Unit) 101 is a processor that controls the overall operation of the control unit 120. The control unit 120 has memories such as a ROM (Read Only Memory) 1021, a RAM (Random Access Memory) 1022, and a storage 105, and each unit is connected via 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] The RAM 1022 is a volatile memory, and is used as a work area and a temporary storage area for developing various control programs stored in the ROM 1021 and storage 105 .
[0026] The ROM 1021 is a nonvolatile memory that stores a computer boot program and the like. The storage 105 is a nonvolatile flash memory or HDD (Hard Disk Drive) that has a larger capacity than the RAM 1022. The storage 105 stores an OS (Operating System) 1053 for controlling the entire computer 100 and programs for various applications 1051 that run on the OS 1053. The storage 105 also stores a universal printer driver 1054 that generates print jobs that comply with a predetermined printing protocol such as IPP, and programs for setting applications 1052a to 1052c that work with the universal printer driver 1054. Hereinafter, the setting applications 1052a to 1052c may be collectively referred to as the setting application 1052. The predetermined printing protocol is a printing protocol that defines the format of a print command that can be executed commonly by the printers 200a to 200c.
[0027] Various applications such as the application 1051 and the setting application 1052 can be installed on the computer 100 via a CD-ROM, a USB memory, or the network 300 .
[0028] The CPU 101 executes the OS program and each application program loaded 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 constitutes a so-called computer.
[0029] In the computer 100, one CPU 101 executes each process shown in the flowcharts described below, but other configurations are also possible. For example, multiple processors may cooperate to execute each process shown in the flowcharts described below.
[0030] The input I / F 103 connects the keyboard 108 and pointing device 109 to the control unit 120. The keyboard 108 and pointing device 109 function as a reception unit that receives user instructions. The reception unit can detect selection of display items such as keys displayed on the screen. The output I / F 104 connects the control unit 120 to a monitor 110 that displays information. The monitor 110 functions as a display unit that displays information. Note that if the computer 100 is a tablet terminal or the like, information is displayed to the user and operations are received 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] The communication I / F 106 is an interface for communicating with external devices such as a printing device on the network 300, or with a server 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 with reference to FIGS. 3(a) and 3(b) and FIG.
[0033] First, an overview of data processing by each software module in the computer 100 will be explained with reference to FIGS. 3(a) and 3(b).
[0034] Each module shown in Fig. 3(a) runs on an OS 1053 (not shown). The OS 1053 is system software that controls the entire computer 100. Here, an example will be described in which Windows (registered trademark) 10 or later OS is installed.
[0035] The data generation application 301 and the data generation application 302 generate and output print data in accordance with user operations. The data generation application 301 and the data generation application 302 are, for example, a document creation application or an image generation application.
[0036] A user operates the data generation application 301 or the data generation application 302 using an input device such as a keyboard 108 or a pointing device 109 typified by 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), 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 extended application that runs on the OS 1053. The data generation application 302 is, for example, a Universal Windows Platform (UWP) application. A UWP application is an application distributed through the Windows (registered trademark) Store, and runs in a different execution environment from the data generation application 301. The different execution environment is, for example, within an individual sandbox (on a virtual environment).
[0039] In the following, an example will be described in which the data generation application 302 generates XPS data as print data, but the present invention is not limited to this, and print data in a data format other than XPS may also be generated.
[0040] The above-described data generation applications 301 and 302 are merely examples, and the data generation application may be any application that outputs print data to a printer driver.
[0041] The conversion module 307 converts the 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 the OS 1053.
[0042] The converted XPS data is spooled in spool area 306. Furthermore, XPS data output from data generation application 302 is spooled in spool area 306. In this embodiment, an example will be described in which data generation application 302 generates and outputs XPS data, but this is not limiting. Data generation application 302 may output data in a data format other than XPS data, and OS 1053 may generate an XPS file in response to a drawing command from data generation application 302.
[0043] The universal printer driver 1054 and the extended printer driver 1055 generate a print job (print command) based on the print data stored in the spool area 306 .
[0044] The universal printer driver 1054 is a printer driver that generates print commands in accordance with a predetermined print protocol based on print data acquired from the application 1051. As shown in FIG. 3B, the universal printer driver 1054 has a print command generator (rendering filter) 312. The print command generator 312 is a print command generation module that converts XPS format data into print commands in accordance with IPP. IPP is a print protocol that can be interpreted by all printers 200a, 200b, and 200c, which are from different vendors. The universal printer driver 1054 may have multiple print generators. The universal printer driver 1054 may be a class driver incorporated as a standard function of the OS 1053, or a universal printer driver that the user separately installs on the computer 100.
[0045] 3(b), the extended printer driver 1055 has print command generation units (rendering filters) 1 to 6 that convert XPS format data into a print job that conforms to a print 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 FIG. 3(b) may each be configured as an independent extended printer driver 1055. Alternatively, a single extended printer driver 1055 may be configured 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 generators 1 to 6 are expansion modules for generating print commands according to other print protocols different from the predetermined print protocol (IPP). The other print protocol is a print protocol that indicates a print command format that can be executed by one of the multiple printers 200a to 200c, but cannot be executed by the other printer. In the example of FIG. 3(b), print command generators 1 and 2 are used to generate print jobs according to a print protocol specific to printer 200a (e.g., LIPS (UFR) format). Print command generators 3 to 5 are used to generate print jobs according to a print protocol specific to printer 200b (e.g., PCL format). Print command generator 6 is used to generate print jobs according to a print protocol specific to printer 200c (e.g., ESC / P format).
[0047] The filter pipeline configuration 400 indicates the order in which modules used to generate a print job are called, from among 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] 3(b) shows an example in which a filter pipeline configuration 400 for a LIPS-compatible model, a PCL-compatible model, and an ESC / P-compatible model is stored, but a filter pipeline configuration 400 for only one of the PDLs may be stored. The filter pipeline configuration 400 is stored in a storage medium such as the storage 105 or the ROM 1021.
[0049] The XPS data obtained from the spool area 306 is processed by one or more print command controllers specified by the filter pipeline configuration 400 .
[0050] For example, by specifying the print command generation unit that should execute the process in the filter pipeline configuration 400, the computer 100 can output a print job that complies with a vendor-specific print protocol.
[0051] For example, if the filter pipeline configuration 400 is configured to perform processing in print command generation unit 312 followed by processing in print command generation units 1 and 2, the job generation flow is as follows: That is, the print command generation unit 312 generates a print command conforming to IPP based on the XPS spool file. It also generates print attributes conforming to IPP based on the standard setting data and adds them to the print command to generate a print job. The job is input to print command generation unit 1. Data processed by print command generation unit 2 is input to print command generation unit 2. Print command generation unit 2 generates a print job conforming to LIPS (UFR). In this way, a print job conforming to the print protocol (LIPS (UFR) format) specific to printer 200a can be generated.
[0052] 3A, the print job generated by the common printer driver 1054 and the extended printer driver 1055 is output to the print manager 318.
[0053] Additionally, the universal printer driver 1054 and the extended printer driver 1055 accept print settings from the print setting applications 1052a to 1052c.
[0054] Print setting applications 1052a to 1052c are print setting applications for making print settings specific to each vendor. In this embodiment, print applications 1052a to 1052c are print setting applications for making print settings specific to printers 200a to 200c, respectively.
[0055] Print settings include, for example, settings for using a stapleless binding function that binds multiple print pages without using staples, and settings for using a box printing function that prints data stored in a specified storage area.
[0056] The universal printer driver 1054 and the extended printer driver 1055 then output a 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 way, 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] According to the above configuration, it is possible to generate a print job that can be interpreted by the printer 200 regardless of the vendor, using the print command generation unit 312 of the universal printer driver 1054. Also, by using the print command generation units 1 to 6 of the extended printer driver 1055, it is possible to generate a print job that conforms to a vendor-specific print protocol.
[0060] Next, details of data processing by each software module in the computer 100 will be explained using Fig. 3(c). Explanation of the contents explained using Figs. 3(a) and 3(b) will be omitted.
[0061] FIG. 3C is a diagram showing an example of the software configuration of the computer 100 in this embodiment.
[0062] The OS 1053 provides a print architecture 10531 for printing using a printer driver. The print architecture 10531 is a so-called V4 print architecture that uses XPS format data as spool data and converts the spool data into print data (PDL) using a printer driver.
[0063] A universal printer driver 1054 that supports printers from multiple vendors is installed on the computer 100. In this embodiment, the universal printer driver 1054 processes print data in accordance with a predetermined print protocol (e.g., IPP). The universal printer driver 1054 may be a class driver incorporated as a standard function of the OS 1053, or may be a universal printer driver that is separately installed on the computer 100 by the user.
[0064] The print architecture 10531 includes a conversion module 307, a universal printer driver 1054, a print manager 318, and a communication unit 319. It is also possible to install a printer driver different from the universal printer driver 1054 (for example, a printer driver specific to a model provided by a vendor).
[0065] <Printing process using the common printer driver 1054> First, a description will be given of the printing process using the universal printer driver 1054. The data generation application 301 and the data generation application 302 work together with the print architecture 10531 to generate print data (for example, a document, an image, etc.).
[0066] When a print instruction is issued via the application 1051, the OS 1053 calls the standard print setting unit 308 of the universal printer driver 1054. The standard print setting unit 308 references a definition file corresponding to the selected printer from a group of definition files 309 for standard print functions. Based on the referenced definition file, the standard print setting unit 308 also generates standard setting data (DEVMODE 303 and PrintTicket 304) indicating the current print settings and PrintCapabilities indicating the printing capabilities of the selected printer.
[0067] The standard setting data is changed as needed via the application 1051 or a screen (user interface) for changing print settings displayed by the OS.
[0068] The definition files included in the definition file group 309 shown in Fig. 3(c) indicate the capabilities of a printer, which are generated based on attribute information acquired from the printer when searching for an IPP printer, etc. The definition file group 309 stores a different file for each printer.
[0069] Next, the generation of a definition file will be described. If a definition file corresponding to the selected printer is not stored in the storage, the universal printer driver 1054 inquires of the printer about its capabilities. The universal printer driver 1054 inquires of the printer about its capabilities via the print manager 318 and the communication unit 319.
[0070] In addition to the print job control function described below, the print manager 318 can also search for IPP-compatible printers and acquire printer capabilities. Specifically, printer capabilities are acquired 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. Attribute information of the printer 200 is obtained in response to this request. The printer capability information obtained by the printer attribute request operation is, for example, capability information for standard print settings, such as whether "double-sided" or "color printing" is possible. Here, the capabilities (attributes) that can be obtained by the printer attribute request operation are support information related to attributes defined by IPP. Therefore, vendor-specific function information (such as stapleless binding or box printing) cannot be obtained by 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] The application 1051 (data generation application 301 and data generation application 302) acquires setting data in PrintTicket format or DEVMODE format generated by the standard print setting unit 308. The data generation application 301 uses a binary DEVMODE 303 as standard setting data indicating the current print settings. The data generation application 302 uses a PrintTicket 304 written in XML, a markup language. This DEVMODE 303 or PrintTicket 304 is standard setting data that holds print settings to be reflected in an IPP-compliant print job. However, DEVMODE 303 and PrintTicket 304 are merely examples of standard setting data and are not limited to these.
[0073] When detecting that a print instruction has been issued by the user, the OS 1053 or application 1051 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 that conforms to the IPP. The PDL data that conforms to the IPP is, for example, data in the Portable Document Format (PDF) or PWG-Raster format.
[0074] Furthermore, print command generation unit 312 generates IPP-compliant print attribute information based on the settings specified in PrintTicket 304 included in the XPS spool file. If the IPP-compliant PDL data and PrintTicket 304 can be correctly understood and the print job can be correctly output, the data may be sent directly to printer 200. In other words, universal printer driver 1054 may send the print job processed by print command generation unit 312 to print manager 318, and then send it to printer 200 via communication unit 319.
[0075] <Printing process using extended printer driver 1055> For a printer 200 that cannot correctly understand PDL data conforming to IPP and cannot correctly output the print job, an extended printer driver 1055 is required that generates a print job that the printer 200 can correctly output.
[0076] The extension printer driver 1055 according to this embodiment converts IPP-compliant PDL data into a vendor-specific PDL that can be correctly output by the destination printer 200.
[0077] The filter pipeline configuration 400 is like a manual that the common printer driver 1054 and the extended printer driver 1055 refer to to determine which print command generation unit (hereinafter sometimes referred to as a rendering filter) to use and how.
[0078] A rendering filter is the smallest unit of printing processing. The universal printer driver and the extended printer driver have one or more rendering filters.
[0079] 4(a), (b), and (c) are diagrams illustrating the filter pipeline configuration 400. Each is an XML file that conforms to the rules established by the printing architecture and defines the calling order of rendering filters, as well as the interface, input, and output formats. The common printer driver 1054 and extended printer driver 1055 that call the rendering filters are called in the defined order and using the defined interface.
[0080] 4A shows an example of a file 400a of the filter pipeline configuration 400. The file 400a defines three rendering filters (print command generation units).
[0081] That is, it is defined so that first the print command generating unit 312 of the common printer driver 1054 is called, then the print command generating unit 1 of the extended printer driver 1055 is called, and then the print command generating unit 2 of the extended printer driver 1055 is called.
[0082] In Fig. 4(a), the print command generation unit 312 of the universal printer driver 1054 is represented as "XPS to PDF." Also in Fig. 4(a), the print command generation unit 1 of the extended printer driver 1055 is represented as "Vender Renderer PDLA." Furthermore, in Fig. 4(a), the print command generation unit 2 of the extended printer driver 1055 is represented as "Vender Renderer PDLB."
[0083] The extended printer driver 1055 calls the filters in the order listed in the filter pipeline configuration 400a, and sends the finally generated PDL data to the print manager 318. In other words, 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 to the printer 200 as a print job.
[0084] Upon receiving the PDL data, the print manager 318 generates print jobs and registers the generated print jobs in a queue. When the printer 200 is ready to print, it transmits the print jobs via the communication unit 319 in the order in which they were registered in the queue.
[0085] The setting application 1052 provides functions such as displaying a preview of print data and displaying a user interface that prompts users to change print settings. The setting application 1052 is an application that runs on a UWP platform separate from the print architecture 10531. This application is based on printing using an IPP-based common printer driver 1054, and is an application that enables more flexible use of the functions of the printer 200 as needed.
[0086] The setting application 1052 runs in a sandboxed UWP execution environment. Therefore, even if the application hangs up or an error occurs, the impact on the entire system can be reduced. In this embodiment, it is assumed that the extended print setting section 10522 of the setting application 1052a is launched to add extended print settings to a print job, but adding extended print settings is not necessarily required.
[0087] Here, an example is shown in which a setting application 1052a is installed as the setting application corresponding to printer 200a. Also, an example is shown in which a setting application 1052b is installed as the setting application corresponding to printer 200b. Furthermore, an example is shown in which a setting application 1052c is installed as the setting application corresponding to printer 200c.
[0088] The print command generation unit 312 determines whether or not to start the setting application 1052 based on the installation status of the extension application and the settings stored in the setting storage unit 320 .
[0089] The setting application 1052 includes a startup application section 10521 , an extended print setting section 10522 , and a communication section 10523 .
[0090] The startup application section 10521 is a module that is called when printing, and controls the startup and operation of an extended print setting section 10522 and a communication section 10523 .
[0091] The extended print setting unit 10522 displays an extended user interface that allows more detailed print settings to be made compared to print settings conforming to IPP on the monitor 110. This extended user interface is displayed on the monitor 110 when the user issues an instruction to start print settings or an instruction to preview a print in the application 1051.
[0092] The communication unit 10523 provides a function for each module of the setting 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] The specific communication method is, for example, the WSD (Web Services for Devices) protocol or the SNMP (Simple Network Management Protocol). It may also be a communication method using a vendor-specific protocol. It is also possible to obtain printer information using control commands defined in a job control language or a printer control language. For example, information may be requested from the printer using commands defined in the PJL (Printer Job Language), PostScript, or CPCA (Common Peripheral Controlling Architecture). It is also possible to obtain information from the printer using the NPAP (Network Printing Alliance Protocol).
[0094] Print command generation units 1 to 6 of the extended printer driver 1055 communicate with the setting application 1052 as necessary to acquire extended print settings. Based on the acquired extended print settings, the settings can be reflected in the vendor-specific PDL data.
[0095] <How to install the enhanced printer driver 1055> Next, a method for installing the extended printer driver 1055 will be described using the flowchart in Fig. 5. The process shown in Fig. 5 is realized by the CPU 101 reading into the RAM 1022 and executing the programs for implementing each control module stored in the ROM 1021 or storage 105.
[0096] First, the installation package for the extended printer driver 1055 will be explained. The installation package for the extended printer driver 1055 uses the mechanism of an extended INF file. An extended INF file is a file that conforms to the "Extension INF" defined by Microsoft (registered trademark) Windows (registered trademark). An extended INF file that defines the same IDs as the HWID and COID described in the base basic INF file is prepared, and the module that you want to add to the base basic package is defined. By installing using an extended INF file, the module described in the basic INF file is overwritten or installed in addition to the module.
[0097] 6 shows an example of a driver package 600 for installing the LIPS-compatible extended printer driver 1055. The driver package 600 includes an extended INF file 6000, a filter pipeline configuration file, and a group of modules for generating print commands.
[0098] The vendor extended INF file 6000 indicates the HWID, COID, etc. of the corresponding basic INF file. The basic INF file is the INF file of the universal printer driver 1054.
[0099] The following describes a method for installing the extended printer driver 1055 using the extended INF: First, the OS 1053 determines whether the INF file to be installed is an extended INF (step S601).
[0100] If it is determined that the file is not an extended INF file (No in step S601), a normal INF installation is performed (step S602).
[0101] If it is determined to be an extended INF file (Yes in step S601), the HWID and COID are checked, and a basic INF file that matches the HWID and COID written in the extended INF file is searched for (step S603).
[0102] If the search result shows that no basic INF file exists that defines the HWID and COID (No in step S603), the installation process ends.
[0103] On the other hand, if the search results in a basic INF file that defines the HWID and COID (Yes in step S603), a process is performed to extend the modules of print command generation units 1 and 2 into the module of the basic INF file (step S604).
[0104] In this embodiment, the filter pipeline configuration file in the package 600 is placed in a location that can be referenced by the universal printer driver. If a filter pipeline configuration 400 already exists, that file is overwritten. Alternatively, a new filter pipeline configuration 400 may be stored by adding it to the existing filter pipeline configuration 400 without overwriting it.
[0105] Furthermore, print command generators 1 and 2 are placed in a location that can be referenced by the extended printer driver. If a vendor extended print processing module with the same name already exists in the placement location, that file is overwritten.
[0106] By following the above procedure, the extended printer driver 1055 can be installed in the computer 100.
[0107] In the example of FIG. 6, an example of installing a LIPS-compatible extended printer driver 1055 has been described, but an extended printer driver 1055 that is compatible with multiple PDLs, such as LIPS, PCL, and ESC / P, may also be installed.
[0108] <Print job generation flow> A print job generation procedure by the computer 100 according to this embodiment will be described with reference to FIG. 7. FIG. 7 is a flowchart showing the control of the computer 100. Each operation (step) shown in the flowchart in FIG. 7 is realized by the CPU 101 reading into the RAM 1022 a program for implementing each control module stored in the ROM 1021 or storage 105 and executing the program. Note that each process shown in the flowchart is realized by cooperation between modules and software components of the application 1051, OS 1053, universal printer driver 1054, and extended printer driver 1055. Some processes, such as data transmission and information input / output, are realized in cooperation with each I / F.
[0109] 7 shows the process of generating a print job by additionally using the pre-installed extended printer driver 1055 when a printer that cannot be supported by the common printer driver 1054 alone is specified as the printer to be used. This process is executed in response to receiving a print instruction from the user.
[0110] In step S701, the application 1051 receives a command to generate a print job from the user, for example, when the print button key is pressed.
[0111] In step S702, the application 1051 outputs drawing data. In step S703, the OS 1053 generates an XPS spool file based on the output drawing data. Note that in the case of printing from the data generation application 301, the OS 1053 generates the XPS spool file using the conversion module 307.
[0112] Next, the OS 1053 determines whether an extended printing module is installed in the computer 100 (S704). For example, the OS 1053 can determine that an extended printing module is installed when an extended INF file 6000 is installed in the computer 100. In the example of FIG. 6, the extended printing module is print command generation units 1 and 2. Alternatively, in the example of FIG. 3(b), it is print command generation units 1 to 6.
[0113] If it is determined that the extended print 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 in accordance with IPP (S705).
[0114] In step S705, the print command generation unit 312 converts the XPS spool file into a PDL that complies with IPP, and also generates print settings (print attributes) that comply with IPP based on the standard settings that indicate the print settings to be set for the job.
[0115] On the other hand, if it is determined that the extended print module is installed (YES in S704), the print architecture 10531 analyzes the print job and identifies the identification information of the printer 200 that will execute the job (S706).
[0116] Next, the printing architecture 10531 performs a process of identifying a 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 need to be directly associated. For example, they may be indirectly associated, such as by identifying the printing protocol to be used based on the printer identification information and then identifying a 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 generators to be used to generate print commands in accordance with LIPS. In this way, the printing device that performs printing identifies the filter pipeline configuration to reference based on information indicating the format of the print data used in the print process.
[0117] Next, in step S707, the printing architecture 10531 determines whether 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. An example of a case in which the filter pipeline configuration 400 to be referenced has not been identified is when the computer 100 does not store a filter pipeline configuration 400 that corresponds to a print protocol specific to the printer 200 that will perform printing. In this way, if the printing device that will perform printing does not store a filter pipeline configuration 400 for generating a print command that corresponds to the format of the print data used in the print process, the computer 100 outputs a print command that complies with a predetermined protocol.
[0118] If the filter pipeline configuration 400 to be referenced is not identified, a notification may be sent indicating that printing will not be performed using a printing protocol specific to the printer 200 specified as the print destination. Alternatively, a notification may be sent indicating that printing will be performed using a common printing protocol (e.g., IPP).
[0119] On the other hand, if a filter pipeline configuration to be referenced is identified in step S707, the printing architecture 10531 generates a print command in accordance with the identified filter pipeline configuration (S709). That is, the printing architecture 10531 generates a print command using one or more print command generators specified by the identified filter pipeline configuration in the specified order.
[0120] For example, when referring to the filter pipeline configuration 400a shown in FIG. 4(a), print data is processed in the order of print command generator 312 of the common printer driver 1054, print command generator 1 of the extended printer driver 1055, and print command generator 2. Here, print command generator 1 corresponds to the Vender Renderer PDLA in FIG. 4(a). Also, print command generator 2 corresponds to the Vender Renderer PDLB in FIG. 4(a).
[0121] First, print data conforming to IPP is generated by the print command generation unit 312. The print command generation unit 312 also generates print settings conforming to IPP based on standard settings indicating print settings to be set for the print job.
[0122] Next, the print data and print settings generated by print command generation unit 312 are output to print command generation unit 1. Print command generation unit 1 and print command generation unit 2 can generate print commands that comply with other print protocols based on print commands generated by universal printer driver 1054 in accordance with a predetermined print protocol (e.g., IPP). For example, print command generation unit 1 and print command generation unit 2 generate print commands that comply with LIPS from the print data received from universal printer driver 1054.
[0123] Furthermore, print command generation unit 1 and print command generation unit 2 acquire extended print settings from setting application 1052a corresponding to the specified printer 200. Print command generation unit 1 and print command generation unit 2 generate print settings specific to the specified printer 200 based on the standard settings received from print command generation unit 312 and the extended print settings acquired from setting application 1052a.
[0124] The print settings are then output together with the generated print command to the print manager 318. In the above example, the print command generation unit 1, the print command generation unit 2, and the setting application 1052a are used, but depending on the specified printer 200, a print command generation unit or setting application 1052 other than those described above may be used.
[0125] When the 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, and then transmits 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 that complies with a unique print protocol obtained by processing the print data acquired by the common printer driver 1054 by one or more modules indicated by the filter pipeline configuration 400. In this way, the print manager 318 outputs a first print command or a second print command according to information indicating the format of the print data used in the print process by the printing device that performs the printing. The first print command is a print command that complies with a predetermined protocol (e.g., IPP), and the second print command is a print command that complies with a different print protocol than the predetermined print protocol.
[0127] When the print command generated in step S705 is output, the print command conforming to IPP is output. In this way, the print manager 318 can output a first print command conforming to a predetermined print protocol (e.g., IPP) based on the print data acquired from the application 1051.
[0128] When the print command generated in step S709 is output, it is possible to output a print command in accordance with a print protocol different from the predetermined print protocol, based on the print data acquired from the application 1051.
[0129] According to the above embodiment, computer 100 uses a universal printer driver that can use a predetermined printing protocol such as IPP, so it can output print commands regardless of the vendor of the printing device. Furthermore, according to the above embodiment, computer 100 can output print commands using a unique printing protocol that is different from the predetermined printing protocol. Therefore, users can use unique printing functions that become available by using the unique printing protocol.
[0130] <Second embodiment> In the first embodiment, an example has been described in which a PDL conforming to IPP is generated in the universal printer driver 1054, and then the extended printer driver 1055 is used to convert the PDL into a vendor-specific PDL and generate a print command, but this is not limiting. A print command may be generated by calling the print command generation of the extended printer driver 1055 without using the print command generation unit 312 of the universal printer driver 1054 as an intermediary.
[0131] The hardware configuration, software configuration, and processing procedures according to this embodiment are the same as those described in embodiment 1, and therefore will not be described again. However, the extended printer driver 1055 according to this embodiment has the function of interpreting XPS data created by an application and converting it into vendor-specific PDL data, rather than PDL that conforms to IPP.
[0132] When the application 1051 receives a print start instruction from the user, it passes the print settings and the XPS spool file to the universal printer driver 1054 .
[0133] Here, an example will be described in which the filter pipeline configuration 400b shown in FIG. 4(b) is selected as the filter pipeline configuration to be referenced in step S707 of FIG.
[0134] The filter pipeline configuration 400b defines only print command generation unit 1 and print command generation unit 2. Print command generation unit 1 corresponds to the Vender Renderer PDLA in FIG. 4(b). Also, print command unit 2 corresponds to the Vender Renderer PDLB in FIG. 4(b).
[0135] The common printer driver 1054 passes the acquired print settings and XPS spool file to the extended printer driver 1055 in accordance with the filter pipeline configuration 400 b without calling the print command generation unit 312 .
[0136] 7, the extended printer driver 1055 generates print commands based on the XPS spool file using print command generation unit 1 and print command generation unit 2 in accordance with filter pipeline configuration 400b. The extended printer driver 1055 also generates print settings specific to the specified printer 200 based on the print settings acquired from the common printer driver 1054 and the extended print settings acquired from the extension application 1052a.
[0137] When the print command is generated in step S709, the print manager 318 generates a print job based on the generated print command and print settings, and then transmits the generated print job to the specified printer 200 via the communication unit 319 (S710).
[0138] In this embodiment, a print job including a vendor-specific PDL is created without calling the print command generation unit 312 of the universal printer driver that complies with IPP. That is, the extended printer driver 1055 can generate print commands that comply with a print protocol other than the predetermined print protocol (e.g., IPP) without the universal printer driver 1054 generating print commands. The extended printer driver 1055 uses print data output from the application 1051 to generate print commands that comply with the other print protocol.
[0139] The print manager 318 can output print commands that comply with other print protocols and that are generated by one or more extension modules without the need for the common printer driver 1054 to generate print commands in accordance with a specific print protocol. This reduces the amount of processing required to generate print commands, compared to when a common printer driver is used, and allows print commands to be generated more efficiently.
[0140] <Third embodiment> In the first and second embodiments, examples have been described in which a print command is generated by converting to a vendor-specific PDL using the extended printer driver 1055 installed on the computer 100, but the present invention is not limited to this. A print command may also be generated using a print command generation unit included in 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 the first embodiment, and therefore a description thereof will be omitted.
[0142] However, the communication unit 319 according to this embodiment communicates with an external server connected to the client computer via a network in accordance with instructions from the extended printer driver 1055. Also, in this embodiment, the extended printer driver 1055 generates print commands using a print command generation unit 8 on an external device.
[0143] Here, an example will be described in which the filter pipeline configuration 400c shown in FIG. 4(c) is selected as the filter pipeline configuration to be referenced in step S707 of FIG.
[0144] Print command generation unit 1 corresponds to the Vender Renderer PDLA in Fig. 4(c). Print command generation unit 2 corresponds to the Vender Renderer PDLB in Fig. 4(c). Print command generation unit 8 corresponds to the Vender Renderer PDLC in Fig. 4(c).
[0145] The filter pipeline configuration 400c defines a URL for using the print command generation unit 8 on an external device. The extended printer driver 1055 calls the print command generation unit 8 in the cloud area according to this definition via the communication unit 319 to generate a print command. In the example of FIG. 4(c), the extended printer driver 1055 performs processing using the print command generation units 1 and 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, and then transmits the generated print job to the specified printer 200 via the communication unit 319 (S710).
[0147] In the above example, an example of generating a print command using print command generators 1, 2, and 8 has been described, but this is not limiting. Processing may be performed by print command generator 312 before processing by print command generator 1. Alternatively, print commands may be generated from XPS spool data using only print command generator 8.
[0148] In this way, the print manager 318 according to this embodiment outputs a print command according to another print protocol obtained by an expansion module of an external device processing print data acquired by the common printer driver 1054. The expansion module of the external device is an expansion module for generating a print command according to another print protocol different from the predetermined print protocol.
[0149] According to this embodiment, print commands are generated using a print command generator on an external device such as a cloud, which improves scalability compared to using only a print command generator installed on the computer 100. In other words, it becomes possible to generate print commands written in a type 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 realizes one or more functions of the above-described embodiments to a system or device via a network or a storage medium, and having one or more processors in the computer of the system or device read and execute the program. It can also be realized by a circuit (e.g., ASIC) that realizes one or more functions. [Explanation of symbols]
[0151] 100 client computers 200 printers 101 CPU 1054 Common Printer Driver 1055 Enhanced Printer Driver 400 Filter Pipeline Config
Claims
1. a printer driver that generates a print command in accordance with a predetermined print protocol based on print data acquired 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 storage unit for storing information indicating a print command generation module included in the printer driver and one or more modules to be used to generate a print command according to the other print protocol among the one or more extension modules; an output means for outputting a print command according to the other print protocol, the print command being 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 comprising:
2. 2. The information processing apparatus according to claim 1, wherein the information stored in the storage unit is information indicating an order in which the one or more modules are used to generate a print command conforming to the other print protocol.
3. The information processing device according to claim 1 or 2, characterized in that the output means is capable of outputting a first print command according to the predetermined print protocol based on the print data obtained from the data generation application, and is capable of outputting a print command according to the other print protocol based on the print data obtained from the data generation application.
4. 4. The information processing apparatus according to claim 3, wherein the output means outputs the first print command or the second print command in accordance with information indicating a format of print data used in the print processing by a printing device that performs printing based on the print data.
5. the one or more extension modules are capable of generating a print command conforming to the other print protocol based on a print command generated by the printer driver conforming to the predetermined print protocol in accordance with the information; 5. The information processing apparatus according to claim 1, wherein the output unit outputs a print command generated by the one or more extension modules and conforming to the other print protocol.
6. the one or more extension modules are capable of generating a print command conforming to the other print protocol using print data output from the data generation application according to the information, without the printer driver generating a print command; An information processing device according to any one of claims 1 to 4, characterized in that the output means is capable of outputting print commands according to the other print protocol generated by the one or more extension modules without the printer driver generating print commands according to the specified print protocol.
7. a communication means for communicating with an external device connected to the information processing device via a network; An information processing device as described in any one of claims 1 to 6, characterized in that the output means is an expansion module possessed by the external device, and outputs a print command conforming to another print protocol different from the specified print protocol, which is obtained by an expansion module processing print data acquired by the printer driver for generating a print command conforming to the other print protocol.
8. The information processing device according to claim 4, characterized in that if the information for generating a print command corresponding to the format of the print data used in the print process by a printing device that prints based on the print data is not stored in the storage means, the output means outputs a print command in accordance with the specified print protocol.
9. the predetermined printing protocol is a printing protocol that defines a format of a printing command that can be executed commonly by a plurality of printing devices, 9. An information processing device according to claim 1, wherein the other printing protocol is a printing protocol that indicates a format of a printing command that can be executed by one of the plurality of printing devices, and a printing protocol that indicates a format of a printing command that cannot be executed by another of the plurality of printing devices.
10. 10. The information processing apparatus according to claim 1, wherein the predetermined printing protocol is Internet Printing Protocol (IPP).
11. a printer driver that generates a print command in accordance with a predetermined print protocol based on print data acquired from a data generation application; one or more extension modules for generating a print command in accordance with another print protocol different from the predetermined print protocol; a print command generation module included in the printer driver; and a storage means that stores information indicating one or more modules to be used to generate a print command in accordance with the other print protocol among the one or more extension modules; A control method for an information processing device having an output step of outputting a print command according to the other print protocol, the print command being obtained by processing the print data acquired by the printer driver by the one or more modules indicated by the information; A control method comprising:
12. a printer driver that generates a print command in accordance with a predetermined print protocol based on print data acquired from a data generation application; one or more extension modules for generating a print command in accordance with another print protocol different from the predetermined print protocol; a print command generation module included in the printer driver; and a storage means that stores information indicating one or more modules to be used to generate a print command in accordance with the other print protocol among the one or more extension modules; An information processing device having A program for executing an output procedure 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.
Citation Information
Patent Citations
Information processing apparatus, print system, and program
JP2014063477A
Program, information processing device, and printing system
JP2014215945A
Information processing device, program, and control method
JP2015114764A
Information processing apparatus, program, and control method
JP2016058041A
Printing system and printing control program
JP2016081336A