Virtual printer program, printing control device, and printing method

The virtual printer program addresses the limitation of general-purpose drivers by simulating a printer to facilitate cloud printing, enabling seamless integration with cloud printing services.

JP2025113679APending Publication Date: 2025-08-04SEIKO EPSON CORP
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2024007951
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-01-23
Publication Date
2025-08-04

AI Technical Summary

Technical Problem

Existing general-purpose printer drivers, such as OS standard drivers, do not support printing via a print server, limiting cloud or on-premises printing capabilities without using printer vendor-specific drivers.

Method used

A virtual printer program that simulates a printer to communicate with a general-purpose printer driver and a print server, enabling the transmission of print jobs to a network-connected printer via a cloud printing service.

Benefits of technology

Enables cloud printing using a general-purpose printer driver by relaying between the driver and the print server, allowing seamless integration with cloud printing services.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025113679000001_ABST
    Figure 2025113679000001_ABST
Patent Text Reader

Abstract

To provide a mechanism that executes printing via a printing server by using a general-purpose printer driver.SOLUTION: A virtual printer program according to an aspect of the present disclosure causes a computer to execute first communication processing, second communication processing, and printing processing. The first communication processing is to communicate with a general-purpose printer driver 16 as if the general-purpose printer driver 16 is a printer. The second communication processing is to communicate with a print server 20. The printing processing is to transmit a print job acquired from the general-purpose printer driver 16 in the first communication processing, to the print server 20 in the second communication processing, and cause the print server 20 to cause a printer connected via a network to perform printing.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to a virtual printer program, a print control device, and a printing method.

Background Art

[0002] Patent Document 1 discloses a technique for reducing the user's effort involved in downloading and installing a printer vendor-specific driver even in an environment where an OS (Operating System) standard printer driver is installed. Such a general-purpose printer driver like this OS standard printer driver does not support printing via a print server, i.e., cloud printing or on-premises printing.

Prior Art Documents

Patent Documents

[0003]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0004] There is a desire to enable printing via a print server, i.e., cloud printing or on-premises printing, using a general-purpose printer driver such as an OS standard printer driver without using a printer vendor-specific driver.

Means for Solving the Problems

[0005] A virtual printer program according to an aspect of the present disclosure causes a computer to execute a first communication process of pretending to be a printer to a general-purpose printer driver and communicating with the general-purpose printer driver, a second communication process of communicating with a print server, and a print process of transmitting a print job acquired from the general-purpose printer driver in the first communication process to the print server through the second communication process and causing the print server to perform printing on a printer connected via a network.

[0006] A print control device according to an aspect of the present disclosure includes a general-purpose printer driver, a first communication processing unit that pretends to be a printer to the general-purpose printer driver and communicates with the general-purpose printer driver, a second communication processing unit that communicates with a print server, and a print processing unit that transmits a print job acquired from the general-purpose printer driver in the first communication processing unit to the print server through the second communication processing unit and causes the print server to perform printing on a printer connected via a network.

[0007] A printing method according to an aspect of the present disclosure includes a printing process of transmitting a print job acquired from a general-purpose printer driver by communicating with the general-purpose printer driver by pretending to be a printer to the general-purpose printer driver to a print server and causing the print server to perform printing based on the print job on a printer connected via a network.

Brief Description of Drawings

[0008]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

BEST MODE FOR CARRYING OUT THE INVENTION

[0009] Hereinafter, embodiments of the present invention will be described with reference to the drawings. Each figure is merely an example for explaining the embodiments of the present invention. Also, not all of the components described in the embodiments of the present invention are essential components of the present invention.

[0010] (Embodiment) [Configuration of System] A configuration example of the printing system according to the present embodiment will be described with reference to FIG. 1. FIG. 1 is a block diagram showing a configuration example of the printing system according to the present embodiment.

[0011] As shown in FIG. 1, the printing system 100 according to the present embodiment can include a terminal device 10, a cloud printing server 20, a printer A (31), a printer B (32), and a printer C (33).

[0012] Hereinafter, the printing system 100 shown in FIG. 1 will be described as an example of the printing system according to the present embodiment. However, for example, any plurality of components of the printing system 100, such as the part composed of the terminal device 10 and the cloud printing server 20, can also be referred to as a printing system. In this specification, the cloud printing server refers to a cloud printing server computer or a cloud printing server device.

[0013] The terminal device 10 is an information processing device having a communication function such as a PC (Personal Computer), a smartphone, or a tablet terminal, and can be used by a user who desires to perform printing. The terminal device 10 is connected to the cloud printing server 20 via a network N1 for processing such as transmitting a printing request. Since the terminal device 10 will control printing, it can be referred to as a printing control device. In addition, since the terminal device 10 functions as a client of the cloud printing server 20, it can also be referred to as a client, a client computer, etc. Although not shown, the printing system 100 can include a plurality of terminal devices 10.

[0014] In addition, the cloud printing server 20 is a server for providing a printing service on the cloud. The cloud printing server 20 can be constructed as a device that enables the transmission of printing requests and printing data using a URI (Uniform Resource Identifier). The cloud printing server 20 is connected to printer A (31), printer B (32), and printer C (33) via the network N2 for processes such as transmitting printing requests. The cloud printing server 20 can also transmit printing requests and printing data to printer A (31), printer B (32), and printer C (33) via a VPN (Virtual Private Network). Of course, the cloud printing server 20 can also be constructed as a cloud printing system in which functions necessary for providing cloud printing are distributed among multiple servers.

[0015] Printer A (31), printer B (32), and printer C (33) are all examples of printers and can print on a medium when receiving printing data. Also, for the sake of convenience, the printing system 100 is described on the premise that it has a configuration including three printers in this way, but at least one printer may be included. Further, each printer may be a device having a communication function and a printing function, or may be a multifunction device having other functions such as a scanner function, a copy function, and a facsimile transmission function. Also, each printer can also be referred to as a printing device or an image forming device. Also, regardless of the printing method in each printer, various printing methods such as an inkjet printing method and a laser printing method can be applied.

[0016] The printing system 100 will perform printing from a selected printer among printer A (31), printer B (32), and printer C (33) via the cloud printing server 20 according to a user operation from the terminal device 10. Hereinafter, configuration examples of the terminal device 10 and the cloud printing server 20 will be described in detail. Note that the description of the configuration example of each printer is omitted.

[0017] [Configuration of Terminal Device 10] As shown in FIG. 1, the terminal device 10 can include a control unit 11, a storage unit 12, a communication unit 13, an operation unit 14, and a display unit 15.

[0018] The control unit 11 controls the entire terminal device 10. The control unit 11 can be configured to include, for example, an arithmetic processing device, a working memory, and a storage device that stores control programs, parameters, etc. The above arithmetic processing device can be a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), etc. The control unit 11 can also be configured as a SoC (System on a Chip). As can be seen from these examples, the control unit 11 can be configured to store the control program in an executable state. However, the control unit 11 can also be configured to store a part of the control program as a circuit configuration like an FPGA (field-programmable gate array), or configured as a dedicated circuit.

[0019] The above control program can include a program for the arithmetic processing device to execute the processing related to printing while cooperating with the storage unit 12, the communication unit 13, the operation unit 14, and the display unit 15. The above control program can include an OS. Since the OS is the OS installed in the terminal device 10, it is an OS of a type corresponding to the model of the terminal device 10, etc. The above control program can include a web browser inside or outside the OS. Hereinafter, an example in which at least a part of the control program is stored in the storage unit 12 provided separately from the control unit 11 will be described, but the storage unit 12 may be a part of the storage device in the control unit 11. That is, the storage unit 12 can also be regarded as a part of the control unit 11.

[0020] The storage unit 12 is a storage device using, for example, a hard disk drive, a solid state drive, or other memories. In the storage unit 12, as a part of the control program, a general-purpose printer driver 16 and a vendor assistance application program 17, which will be described later, are stored in an executable state from the control unit 11. Hereinafter, the vendor assistance application program will be abbreviated as vendor assistance App for explanation. Also, the storage unit 12 can store various data such as files to be printed.

[0021] The communication unit 13 is a part that communicates wirelessly or wiredly with an external device such as a cloud printing server 20 via a network N1 in accordance with various mobile communication standards, a predetermined communication standard such as the Wi-Fi (registered trademark. The same shall apply hereinafter) standard. The communication unit 13 can be configured by one or more communication interfaces capable of such communication.

[0022] The operation unit 14 is a part that receives operations by the user of the terminal device 10 and can also be referred to as an operation reception unit. The operation unit 14 can be realized by, for example, any one or more of physical buttons, a touch panel mounted on the display unit 15, a pointing device, and a keyboard. In a configuration where the operation unit 14 includes a touch panel, the display unit 15 and the touch panel can also be referred to as the operation panel of the terminal device 10.

[0023] The display unit 15 is a part for displaying a user interface (UI) image for operating the terminal device 10 and is configured by, for example, a display device such as a liquid crystal display or an organic electroluminescence display. Note that the display unit 15 can also be configured to include a display and a drive circuit for driving the display.

[0024] The general-purpose printer driver 16 will be described. The general-purpose printer driver 16 is a printer driver standard to the OS, which is included in the OS contained in the control program or attached to the OS. The general-purpose printer driver 16 can be a program that can control various types of printers to execute printing. Note that the general-purpose printer driver 16 can also be referred to as an OS general-purpose printing program or a general-purpose printing program.

[0025] The general-purpose printer driver 16 is a driver that uses general-purpose protocols for printer discovery and printing. For example, the general-purpose printer driver 16 uses mDNS / DNS-SD for printer discovery and IPP for printing on the printer. Here, DNS is the abbreviation of Domain Name System. mDNS is the abbreviation of multicast DNS. DNS-SD is the abbreviation of DNS Service Discovery. IPP is the abbreviation of Internet Print Protocol.

[0026] As can be seen from this example, the general-purpose printer driver 16 can be, for example, an IPP Class driver. IPP is an example of a standard protocol for controlling printer management and printing. IPP uses HTTP (Hyper Text Transfer Protocol) POST requests and responses to obtain and control printer information. With IPP, printer settings and printer status acquisition can be performed. Here, secure communication can be performed by using HTTPS (HTTP Secure) instead of HTTP.

[0027] The vendor-assisted App 17 will be described. The vendor-assisted App 17 is an application program that assists the general-purpose printer driver 16 and is used to expand the functions of the general-purpose printer driver 16. Therefore, the general-purpose printer driver 16 can be provided with functions for starting the vendor-assisted App 17 and sending a print job to the vendor-assisted App 17.

[0028] The vendor-assisted App 17 can be a program for causing a computer (which refers to the terminal device 10 or the control unit 11 here) to execute print control that assists the general-purpose printer driver 16 and is suitable for the performance of the target printer, that is, print control that supports the unique functions of that printer. When the vendor-assisted App 17 acquires a print job from the general-purpose printer driver 16, it can convert the print job so that printing using the unique functions of the specified printer can be executed on that printer.

[0029] The vendor-assisted App 17 is an application program provided by a printer vendor or the like. The vendor-assisted App 17 can be provided to the user of the terminal device 10 by being published, for example, in an application store provided by the OS provider. Alternatively, the vendor-assisted App 17 can be provided to the user by being included in the OS or attached to the OS. The vendor-assisted App 17 can be, for example, a Print Support Application (PSA). [[ID=X]]

[0030] [[ID=Y]] [[ID=Z]] And the vendor-assisted App 17 can include a virtual printer program. However, the virtual printer program can also be implemented to be included in the general-purpose printer driver 16. Alternatively, the virtual printer program can be implemented separately from the general-purpose printer driver 16 and the vendor-assisted App 17, or can be implemented in a distributed manner between the general-purpose printer driver 16 and the vendor-assisted App 17.

[0031] It should be noted that in the original text, the tags

[0030] , , seem to be just placeholders without specific content for translation. I've left them as they are in the translation. Also, I've added some tags (X, Y, Z) for the sake of showing the unchanged tags in the middle of the text. If there's any specific requirement for handling these tags, please let me know.This virtual printer program, generally speaking, has a function of making it operate as if it were a printer for the general-purpose printer driver 16, that is, a function of providing a virtual printer to the general-purpose printer driver 16. The virtual printer program provides a virtual printer to the general-purpose printer driver 16 and has a function of communicating with the cloud printing server 20, thereby enabling printing via the cloud printing server 20.

[0032] Specifically, the virtual printer program is a program that causes a computer (here, the computer also refers to the terminal device 10 or the control unit 11) to execute the following first communication process, second communication process, and printing process.

[0033] The first communication process communicates with the general-purpose printer driver 16 by making it appear as if it were a printer to the general-purpose printer driver 16. Note that this communication is to be made inside the terminal device 10. That is, the first communication process is a process in which the virtual printer program acts as a virtual printer and communicates with the general-purpose printer driver 16. Prior to the above communication, generation of a virtual printer is to be performed. For example, it is advisable to generate three virtual printers corresponding to each of three printers such as printer A (31) connected to the cloud printing server 20.

[0034] The second communication process communicates with the cloud printing server 20. This communication is via the communication unit 13. The second communication process is used during printing processes such as sending a print job from the terminal device 10 to the cloud printing server 20. Also, the second communication process can be used when generating a virtual printer.

[0035] The printing process transmits the printing job obtained from the general-purpose printer driver 16 in the first communication process to the cloud printing server 20 in the second communication process to perform cloud printing. For example, first, in the general-purpose printer driver 16, a file to be printed and a virtual printer are specified to generate a printing job. Then, in the above printing process, the virtual printer program acts as the virtual printer to obtain the printing job from the general-purpose printer driver 16, and transmits the printing job to the cloud printing server 20 via the communication unit 13. Thereby, the cloud printing server 20 transmits the printing job to the printer corresponding to the specified virtual printer among the connected printers 31 to 33, and printing on that printer is executed.

[0036] Also, when the vendor-assist App 17 obtains a printing job from the general-purpose printer driver 16, it can convert the printing job so that printing using the unique function of the printer corresponding to the specified virtual printer can be executed on that printer. When such conversion is performed, the above printing process can transmit the printing job after conversion by the vendor-assist App 17 to the cloud printing server 20 via the communication unit 13. Thereby, the cloud printing server 20 transmits the above converted printing job to the printer corresponding to the specified virtual printer among the connected printers 31 to 33, and printing on that printer can be executed taking advantage of the unique function of that printer.

[0037] In other words, in the present embodiment, a printing method including the above-described first communication process, second communication process, and printing process can be provided.

[0038] Furthermore, in other words, the terminal device 10 includes a general-purpose printer driver 16 and the following first communication processing unit, second communication processing unit, and printing processing unit.

[0039] The first communication processing unit communicates with the general-purpose printer driver 16 by pretending to be a printer. Since the first communication processing unit provides a virtual printer, it can also be referred to as a virtual printer unit. Alternatively, since the first communication processing unit communicates with the general-purpose printer driver 16, it can also be referred to as a driver communication unit. The second communication processing unit communicates with the cloud printing server 20. Since the second communication processing unit communicates with the cloud printing server 20, it can also be referred to as a server processing unit. The printing processing unit transmits the printing job acquired from the general-purpose printer driver 16 by the first communication processing unit to the cloud printing server 20 by the second communication processing unit to perform cloud printing. Since the printing processing unit controls the performance of cloud printing, it can also be referred to as a printing control unit.

[0040] [Configuration of Cloud Printing Server 20] As shown in FIG. 1, the cloud printing server 20 can include a control unit 21, a storage unit 22, and a communication unit 23.

[0041] The control unit 21 controls the entire cloud printing server 20. Similar to the control unit 11, the control unit 21 can be configured to include, for example, an arithmetic processing unit, a working memory, and a storage device that stores control programs, parameters, and the like. The control programs and parameters in the control unit 21 will be different from those in the control unit 11. The control program in the control unit 21 will include server programs such as a Web server program. Hereinafter, the control program in the control unit 21 will be simply referred to as a server program for explanation.

[0042] The server program can include a program for the arithmetic processing unit to execute processing related to cloud printing while cooperating with the storage unit 22 and the communication unit 23. Hereinafter, an example will be given in which the server program, parameters, and the like are stored in the storage unit 22 provided separately from the control unit 21 for explanation, but the storage unit 22 may be a part of the storage device within the control unit 21. That is, the storage unit 22 can also be regarded as a part of the control unit 21.

[0043] The storage unit 22 is, for example, a storage device using a hard disk drive, a solid state drive, or other memory. Although not shown, a server program is stored in the storage unit 12 so as to be executable from the control unit 11, and a table associating device information and a URI for each printer can be stored as part of parameters. Note that the device information may be referred to as device data.

[0044] The device information of each printer may be any information that can identify printer A (31), printer B (32), and printer C (33). The device information can be used as information for designating a printer for which printing is to be executed from the terminal device 10. The server program can transmit a print job to the URI corresponding to the device information designated from the terminal device 10 via the communication unit 23.

[0045] The URI of each printer refers to the URIs of printer A (31), printer B (32), and printer C (33) connected via the communication unit 23, and is registered for accessing each printer. The URI can be an email address, and such an example will be given below. However, the registered URI may be another type of URI such as a URL (Uniform Resource Locator).

[0046] The communication unit 23 is a part that communicates wirelessly or wiredly with an external device such as the terminal device 10 via the network N1 and communicates wirelessly or wiredly with each printer via the network N2 in accordance with a predetermined communication standard such as the Wi-Fi standard and various mobile communication standards. The communication unit 23 can be configured by one or more communication interfaces capable of such communication.

[0047] With such a configuration, the cloud printing server 20 provides a cloud printing service for performing printing on the connected printers to the terminal device 10.

[0048] Note that the cloud printing service must be provided by the same vendor as the connected printer, that is, all printers connected to the cloud printing server 20 can only be printers of the vendor providing the cloud printing service. However, the printers connected to the cloud printing server 20 can include printers of other vendors that are not the vendor providing the cloud printing service. Even in this case, the virtual printer program can extend the functions of printers of other vendors in terms of cloud printing functions, that is, it can pretend to be a virtual printer. Note that the vendor-assisted App17 may or may not provide extended functions other than the functions of the virtual printer for printers of other vendors even if it includes part or all of the virtual printer program.

[0049] [Effects of the Present Embodiment] Before explaining more specific processing examples in the present embodiment, the effects of the present embodiment will be described.

[0050] As described above, in the printing system 100, the virtual printer program provides a virtual printer to a general-purpose printer driver 16 such as an IPP Class driver, and communicates with the cloud printing server 20 via the virtual printer. By relaying between the general-purpose printer driver 16 and the cloud printing server 20 that provides the cloud printing service, printing by the cloud printing service is realized from the general-purpose printer driver 16. In this way, in the printing system 100, by using the mechanisms of the general-purpose printer driver 16 and the vendor-assisted App17 and incorporating the virtual printer program, printing by the cloud printing service can be realized. Therefore, according to the present embodiment, cloud printing can be executed using the general-purpose printer driver 16.

[0051] To supplement the above effects, the printing system according to the present embodiment is compared with a comparative example. In the printing system according to the comparative example, the printer is controlled using a general-purpose printer driver incorporated as a standard in the Windows (registered trademark; the same shall apply hereinafter) operating system without using the vendor's printer driver. Even in this general-purpose printer driver in the comparative example, general-purpose protocols for printer search and printing are used. Even in the general-purpose printer driver in the comparative example, a vendor auxiliary application program associated with the printer is launched, and a mechanism for customizing printing settings and IPP communication during printing is provided. Of course, this vendor auxiliary application and the general-purpose printer driver do not include a virtual printer program.

[0052] However, the mechanism according to the comparative example only targets printers connected to the same network or printers connected via USB (registered trademark; the same shall apply hereinafter), and cannot utilize a cloud printing service provided by a vendor. Note that USB is an abbreviation for Universal Serial Bus.

[0053] As described above, cloud printing using a general-purpose printer driver cannot be realized in such a comparative example. On the other hand, as described above, according to the present embodiment, by introducing a virtual printer program and passing through the virtual printer, cloud printing using the general-purpose printer driver 16 can be realized.

[0054] [Outline of Processing Example] Hereinafter, specific processing examples in this embodiment will be described. In the processing examples described here, as preparation for printing processing, a printer queue registration process corresponding to the virtual printer registration process is executed. Hereinafter, examples of the printer queue registration process and two patterns of printing processing will be given and described. In the printer queue registration process, printing capabilities are acquired from the cloud printing server 20, and a virtual printer is published based on the printing capabilities. Also, in any of the printing processes to be described, print data is passed from the general-purpose printer driver 16 to the virtual printer, and the virtual printer communicates with the cloud printing service, thereby relaying between the general-purpose printer driver 16 and the cloud printing service. Here, the cloud printing service can refer to the server program in the cloud printing server 20.

[0055] [Printer Queue Registration Process] The printer queue registration process for registering a virtual printer will be described with reference to FIGS. 2 to 5. FIG. 2 is a sequence diagram for explaining an example of the printer queue registration process in the printing system 100. FIG. 3 is a diagram showing an example of the UI image displayed in the registration process of FIG. 2. FIG. 4 is a diagram showing an example of the UI image displayed when cloud settings are selected in the UI image of FIG. 3. FIG. 5 is a diagram showing an example of the configuration file generated in the registration process of FIG. 2.

[0056] First, the user U of the terminal device 10 activates the vendor assistance App 17 via the operation unit 14 (step S1). The vendor assistance App 17 causes the display unit 15 to display, for example, the UI image 40 shown in FIG. 3. The UI image 40 includes a button 41 to proceed to the UI image for setting the printer, a button 42 to proceed to the UI image for setting the scanner, a button 43 to proceed to the UI image for setting the FAX, and a button 44 to proceed to the UI image for setting cloud printing. Regardless of the target to be set included in the UI image 40, other targets include a camera, other devices, and the like. However, it suffices that the UI image 40 includes a button 44 to proceed to the UI image for setting cloud printing, that is, the UI image for registering the virtual printer. By selecting the button included in the UI image 40, the vendor assistance App 17 can display the UI image for setting the function or device in question.

[0057] The setting here refers to the setting as an extended function of the general-purpose printer driver 16. For example, when the button 44 is selected, it proceeds to the UI image 50 illustrated in FIG. 4 for generating a virtual printer as an extended function.

[0058] In the vendor assistance App 17, when the button 44 is selected in the UI image 40, or at the stage of starting step S1 without going through the display of the UI image 40, the UI image 50 shown in FIG. 4 can be displayed on the display unit 15. The UI image 50 is a UI image for inputting user information of the vendor assistance App 17 and the URI of the printer to be a virtual printer. The UI image 50 can include an input field 51 for an email address as the URI of the printer and an input field 52 for an access key. Further, the UI image 50 can include an OK button 54 to be selected when setting is performed with the input content, and a cancel button 55 to be selected when discarding the input content and closing the UI image 50. Note that the UI image 50 is a UI image for cloud printing settings, and can further include a network setting button 53. This network setting button 53 is a button selected, for example, when displaying a UI image for setting network connection to the cloud printing server 20.

[0059] Next, after step S1, the user U inputs the user information and the printer URI registered in the cloud printing service 24 from the UI image 50 via the operation unit 14 (step S2). Specifically, the user U inputs to the input field 51 or the input fields 51 and 52 as described above, and selects the OK button 54. Hereinafter, an example of generating a virtual printer only for the printer A (31) will be given.

[0060] Next, the vendor assistance App 17 communicates with the cloud printing service 24 based on the input information, requests user authentication based on the user information, and requests acquisition of printing ability information associated with the printer URI (step S3). Note that illustration of user authentication is omitted.

[0061] When the vendor-assisted App 17 successfully authenticates the user, it obtains this printing capability information from the cloud printing service 24 as a response (step S4). Note that when the vendor-assisted App 17 fails to authenticate the user, it may return a message indicating that the user authentication has failed as a response.

[0062] The printing capability information that the vendor-assisted App 17 can obtain from the cloud printing service 24 is information indicating the printing capabilities of the printer indicated by the printer URI. Examples of the printing capabilities here include the supported print data formats, color printing support, supported paper sizes, and supported print qualities. The printing capabilities can also be referred to as printing performance.

[0063] Here, the supported print data formats refer to the formats of the supported print data, and examples include PNG, PDF, PWG-Raster, JPEG, and vendor-specific formats. Note that PNG is short for Portable Network Graphics. PDF is short for Portable Document Format. PWG is short for Printer Working Group. JPEG is short for Joint Photographic Experts Group. Also, color printing support indicates whether color printing is supported. Not supporting color printing means only supporting monochrome printing. Supported paper size and supported print quality refer to the supported paper size and print quality, respectively.

[0064] Next, the vendor assistance App 17 generates a configuration file for the virtual printer based on the acquired printing ability information and passes it to the virtual printer publishing program 18 (step S5). The virtual printer publishing program 18 can be provided included in the vendor assistance App 17 or the general-purpose printer driver 16. Also, the virtual printer publishing program 18 can be provided as a program included in the virtual printer program. However, the virtual printer publishing program 18 can also be provided as a program separate from the virtual printer program. This is because the virtual printer program only needs to be able to communicate with the general-purpose printer driver 16 as that virtual printer when using the published virtual printer.

[0065] The configuration file for the virtual printer can be generated as a file containing the printing ability information acquired for the target printer, for example, like the json-formatted file 60 shown in FIG. 5. When there are multiple target printers, the file 60 can be generated as a file containing the printing ability information acquired for each printer. In the file 60, for each target printer, the name "name", URI "uri", user information "user_info", and the address of the IPP server "ipp_server_address" are described. Further, in the file 60, for each target printer, color printing support "color", supported print size "paper_size", supported print quality "quality", and supported print data format "data_format" are also described. Note that the file 60 gives examples described for printers A (31) and B (32).

[0066] Next, the virtual printer publishing program 18 publishes a virtual printer based on a configuration file such as file 60 (step S6). In FIG. 2, for the sake of convenience, only the virtual printer A(31v) which is the virtual printer of printer A(31) is illustrated as the virtual printer. In step S6, the virtual printer publishing program 18 publishes the virtual printer A(31v) as one of the IPP printing services, for example, using the mDNS / DNS-SD function. The address of the IPP server in file 60 indicates the address where the target virtual printer is to be published.

[0067] Here, the virtual printer publishing program 18 and mDNS / DNS-SD will be supplemented and explained. The virtual printer publishing program 18 is exemplified by an mDNS / DNS-SD server program or a program including the server program. The virtual printer publishing program 18 can be a program that provides a service publishing function and a printer address resolution function as functions of mDNS / DNS-SD.

[0068] mDNS / DNS-SD is provided, for example, as part of the Bonjour (registered trademark. The same applies hereinafter) function provided by Apple (registered trademark). Bonjour is a program in which technologies such as Zeroconf (Zero-configuration networking) are implemented. Zeroconf is a series of techniques for automatically generating an available IP (Internet Protocol) network without manual operation and without using a special configuration server. The virtual printer publishing program 18 has a function of publishing printer information on the network using such an mDNS / DNS-SD mechanism. As this printer information, a virtual printer based on the printing ability of the printer can be published in mDNS / DNS-SD.

[0069] After the virtual printer is published in step S6, when the user U performs an operation to activate the queue registration UI image 16u of the general-purpose printer driver 16 using the operation unit 14, the queue registration UI image 16u is activated (step S7). The queue registration UI image 16u is a UI image for registering a printer queue. The general-purpose printer driver 16 searches for a printer before or during the display of the queue registration UI image 16u (step S8).

[0070] Since the virtual printer A (31v) has been published in step S6, the printer A (31) as the virtual printer A (31v) is also included in the search destination. Therefore, the general-purpose printer driver 16 receives information such as the device information of printer A from the searched virtual printer A (31v) as a response to the search (step S9). Of course, printers other than the virtual printer A (31v) may also be discovered by the search in step S8, and in that case, the general-purpose printer driver 16 also receives information about those printers.

[0071] Next, the general-purpose printer driver 16 displays information indicating the printers found as a result of the search as a list of printers on the queue registration UI image 16u (step S10). This list also includes the virtual printer A (31v). Next, when the user U selects the virtual printer A (31v) as printer A (31) from the operation unit 14 on the queue registration UI image 16u, the general-purpose printer driver 16 registers a printer queue for the selected printer A (31) (step S11).

[0072] Through such registration processing, the user U can perform a printing process of selecting printer A (31) on the terminal device 10, which actually means performing a printing process of selecting the virtual printer A (31v). Although this printing process will be described later, depending on the implementation destination of the program that executes the first communication process in the virtual printer program, in other words, depending on the provider of the virtual printer, either of two patterns of processing examples can be adopted.

[0073] In the above example of the registration process, an example of generating a virtual printer only for Printer A (31) was given. However, the same applies to Printer B (32) and Printer C (33). Also, as a modified example of the UI image 50, by providing a UI image that allows input of printer URIs for a plurality of printers, all virtual printers can be generated at once.

[0074] Also, as exemplified in the processes of steps S3 to S6, the first communication process may pretend to be a printer having the capabilities of the printer acquired from the cloud printing server 20 in the second communication process. Such a process differs between (1) when the program that executes the first communication process in the virtual printer program is implemented in the general-purpose printer driver 16 or the OS, and (2) when it is implemented otherwise, such as in the vendor-assist App 17.

[0075] In the case of the above (1), the virtual printer program can include a program that causes the computer exemplified in the terminal device 10 to execute the following process. Such a process is a process of setting the capabilities of the printer acquired from the cloud printing server 20 in the second communication process in the general-purpose printer driver 16 or the OS of the computer to define the first communication process. In the case of the above (1), the printing process is, for example, as described in the first example below.

[0076] In the case of the above (2), the virtual printer program can include a program that causes the computer exemplified in the terminal device 10 to execute the following process. Such a process is a process of setting the capabilities of the printer acquired from the cloud printing server 20 in the second communication process in the computer to the virtual printer program to define the first communication process. In the case of the above (2), the printing process is, for example, as described in the second example below.

[0077] [First Example of Printing Process] The first example of the printing process will be described with reference to FIGS. 6 and 7. FIG. 6 is a sequence diagram for explaining the first example of the printing process executed in the printing system 100 of FIG. 1. FIG. 7 is a block diagram showing a detailed example of a part of the printing system 100 of FIG. 1 and illustrating a configuration example of the printing system that executes the printing process of FIG. 6.

[0078] The first example is an example in which the general-purpose printer driver 16 of the OS includes a virtual printer publishing program and has the function of publishing a virtual printer. Further, in the first example, a mechanism is provided in the general-purpose printer driver 16 of the OS to pass the printing data for the virtual printer to the vendor-assisted App17. In this case, among the virtual printer programs, a program that executes the first communication process and passes the printing job to the vendor-assisted App17 is implemented in the general-purpose printer driver 16. And, among the virtual printer programs, a program that executes the second communication process and the printing process is implemented in the vendor-assisted App17.

[0079] As shown in FIG. 7, the printing system 100a, which is the first example of the printing system 100, includes a user PC 10a, which is an example of the terminal device 10, a cloud printing server 20a, which is an example of the cloud printing server 20, and a printer A (31).

[0080] The user PC 10a includes a general-purpose printer driver 16a that publishes a virtual printer 18a in the general-purpose printer driver 16 and a vendor-assisted App17. The cloud printing server 20a and the cloud printing service 24a each have an HTTP server 25a provided in the cloud printing service 24 to communicate with the vendor-assisted App17 in the cloud printing server 20 and the cloud printing service 24.

[0081] In such a printing system 100a, first, the user U activates an application program for activating, editing, etc. a print target file such as a document file. Then, by the user U performing an operation such as selecting the virtual printer A (31v) in the print settings of the print target file from the operation unit 14, the general-purpose printer driver 16a receives an instruction to start printing (step S21).

[0082] The general-purpose printer driver 16a converts the print target file into print data which is data in a printable format. Since the virtual printer 18a which is the virtual printer A (31v) is selected, the virtual printer 18a is activated and the print data is passed (step S22). The virtual printer 18a which is the virtual printer A (31v) starts the vendor assistance App17 by sending the received print data and the user information set in the virtual printer A (31v) to the vendor assistance App17 (step S23). This transmission is an inter-process communication.

[0083] The vendor assistance App17 converts the received print data into a format for the cloud printing service 24a as necessary (step S24). Before this conversion, the user U can also instruct a print setting using an extension function other than the cloud printing function as a print setting for the virtual printer A (31v). In this case, in step S24, the conversion will be performed according to the instructed print setting. Note that in step S22, the print target file may be passed to the virtual printer 18a without converting the print data, and in step S24, the print target file may be converted into a format for the cloud printing service 24a.

[0084] Next, the vendor-assisted App 17 requests user authentication based on the user information to the cloud printing service 24a (step S25) and obtains the authentication result as a response (step S26). The communication between the vendor-assisted App 17 and the cloud printing server 20a including the communication here is communication according to the HTTP protocol and becomes communication between the vendor-assisted App 17 and the HTTP server 25a. Hereinafter, the explanation will be made on the premise that the user authentication has been successful.

[0085] The vendor-assisted App 17 transmits a print job including print data to the cloud printing service 24a (step S27). The cloud printing service 24a transmits this print job to the printer A (31) corresponding to the virtual printer A (31v) (step S28). The printer A (31) receives this print job, performs printing, and produces printed matter.

[0086] Thereafter, the cloud printing service 24a periodically makes a request to obtain the job status (JS), which is the status of the print job, from the printer A (31) (step S28) and receives the JS as a response (step S30). Also, the vendor-assisted App 17 periodically makes a request to obtain the JS to the cloud printing service 24a (step S31) and receives the JS as a response (step S32). The vendor-assisted App 17 causes the display unit 15 to display the obtained JS so that the user U can confirm it (step S33).

[0087] As exemplified in step S24, the above-described printing process can also transmit the print job obtained from the general-purpose printer driver 16a in the first communication process to the cloud printing server 20a after conversion. This conversion of the print job can be executed so that it becomes a print job using the unique function of the printer that is the print destination in the cloud printing service 24a.

[0088] Also, as exemplified in steps S31 and S32, the above-described printing process may include a process of obtaining the status of a print job from the cloud printing server 20a by the second communication process after performing cloud printing.

[0089] Also, in the above example, the vendor assistance App17 caused the JS to be displayed. However, the above-described printing process may include a process of notifying the general-purpose printer driver 16a of the JS obtained from the cloud printing server 20a by the first communication process. Thereby, in addition to giving a print instruction to the cloud printing service 24a provided by the vendor, the general-purpose printer driver 16a can also obtain the JS.

[0090] Also, as exemplified in the first example, the above-described second communication process may communicate with the cloud printing server 20a via another application program installed on the computer on which the virtual printer program is installed. This computer is exemplified by the user PC10a. Also, the above another application program is exemplified by the vendor assistance App17.

[0091] [Second Example of Printing Process] The second example of the printing process will be described with reference to FIGS. 8 and 9. FIG. 8 is a sequence diagram for explaining a second example of the printing process executed in the printing system 100 of FIG. 1. FIG. 9 is a detailed example of a part of the printing system 100 of FIG. 1, and is a block diagram showing a configuration example of the printing system that executes the printing process of FIG. 8.

[0092] The second example is an example where the OS, including the general-purpose printer driver 16, does not provide the function of virtual printer disclosure, unlike the first example. That is, in the second example, the virtual printer program is implemented separately from the general-purpose printer driver 16, such as being implemented in the vendor-assisted App 17, and the virtual printer program communicates with the cloud printing service. In the second example, a virtual printer is disclosed within the terminal device 10 in addition to the general-purpose printer driver 16. Also, the virtual printer program in the second example has the function of an IPP server for disclosing the virtual printer.

[0093] As shown in FIG. 9, a printing system 100b, which is a second example of the printing system 100, includes a user PC 10b, which is an example of the terminal device 10, a cloud printing server 20b, which is an example of the cloud printing server 20, and a printer A (31).

[0094] The user PC 10b includes a general-purpose printer driver 16b that does not have the function of disclosing a virtual printer in the general-purpose printer driver 16, and a virtual printer program 18b that has the function of an IPP server 26 for disclosing the virtual printer. The cloud printing server 20b and the cloud printing service 24b are provided with an HTTP server 25b in the cloud printing service 24 to communicate with the IPP server 26 in the cloud printing server 20 and the cloud printing service 24, respectively.

[0095] In such a printing system 100b, first, the user U starts an application program for starting and editing a print target file such as a document file. Then, when the user U performs an operation such as instructing cloud printing in the print settings of the print target file from the operation unit 14, the general-purpose printer driver 16b receives an instruction to start printing (step S41).

[0096] The general-purpose printer driver 16b converts the file to be printed into print data, which is data in a printable format. Since cloud printing is instructed, it starts the virtual printer program 18b and passes the print data (step S42). The print data here is transmitted by IPP communication. The started virtual printer program 18b can receive, from the user U, a selection operation of a virtual printer and an operation of instructing a print setting using an extension function other than the cloud printing function as a print setting for the virtual printer. Hereinafter, the description will be made on the assumption that the virtual printer A (31v) is selected.

[0097] The virtual printer program 18b converts the received print data into a format for the cloud printing service 24b as necessary based on the print settings of the virtual printer A (31v) (step S43). Note that in step S42, the file to be printed may be passed to the virtual printer program 18b without converting the print data, and in step S43, the file to be printed may be converted into a format for the cloud printing service 24b.

[0098] Next, the virtual printer program 18b requests user authentication based on user information to the cloud printing service 24b (step S44), and obtains an authentication result as a response (step S45). Here, as the user information to be used, the virtual printer program 18b may read the user information set in the virtual printer A (31v). Also, the communication between the virtual printer program 18b and the cloud printing server 20b including the communication here is communication according to the HTTP protocol, and is communication between the IPP server 26 and the HTTP server 25b. Hereinafter, the description will be made on the premise that the user authentication is successful.

[0099] The virtual printer program 18b sends a print job including print data to the cloud printing service 24b (step S46). The cloud printing service 24b sends this print job to the printer A (31) corresponding to the virtual printer A (31v) (step S47). The printer A (31) receives this print job and performs printing to produce printed matter.

[0100] After that, the cloud printing service 24b periodically sends a request to obtain the JS to the printer A (31) (step S48) and receives the JS as a response (step S49). Also, the virtual printer program 18b periodically sends a request to obtain the JS to the cloud printing service 24b (step S50) and receives the JS as a response (step S51). Also, the general-purpose printer driver 16b periodically sends a request to obtain the JS to the virtual printer program 18b (step S52) and receives the JS as a response (step S53). The general-purpose printer driver 16b causes the display unit 15 to display the obtained JS so that the user U can view it (step S54).

[0101] Also, as exemplified in steps S50 and S51, the above-described printing process may include a process of obtaining the status of the print job from the cloud printing server 20b in the second communication process after performing cloud printing.

[0102] Also, as exemplified in steps S52 and S53, the above-described printing process may include a process of notifying the general-purpose printer driver 16b of the JS obtained from the cloud printing server 20b in the first communication process. Thereby, the general-purpose printer driver 16b can also obtain the JS in addition to the print instruction to the cloud printing service 24b provided by the vendor.

[0103] Note that the second example can be similarly applied even if the virtual printer program 18b is implemented in the vendor assistance App17 or separately implemented in the user PC10b from the vendor assistance App17, as long as it is not implemented in the general-purpose printer driver 16.

[0104] [Reference Example] As a reference example, the case where a cloud printing service is made compatible with IPP will be described with reference to FIGS. 10 and 11. FIG. 10 is a sequence diagram for explaining the printing process executed in the printing system according to the reference example. FIG. 11 is a block diagram showing a part of the printing system according to the reference example and the configuration of the printing system that executes the printing process of FIG. 10.

[0105] The reference example is an example in which a general-purpose printer driver communicates with a cloud printing service compatible with IPP. In the reference example, either the OS including the general-purpose printer driver or the vendor-assisted App may publish the cloud printing service as a virtual printer.

[0106] As shown in FIG. 11, the printing system 100c according to the reference example includes a user PC 10c, a cloud printing server 20c, and a printer A (31). The user PC 10c includes a general-purpose printer driver 16c including a virtual printer 18c. The cloud printing server 20c implements a cloud printing service 24c including an IPP server 26.

[0107] In such a printing system 100c, first, the user U starts an application program for starting or editing a print target file such as a document file. Then, by the user U performing an operation such as selecting the virtual printer A (31v) in the print settings of the print target file from the operation unit, the general-purpose printer driver 16c receives an instruction to start printing (step S61).

[0108] The general-purpose printer driver 16c requests user authentication based on user information from the cloud printing service 24c (step S62), and obtains an authentication result as a response (step S63). The communication between the general-purpose printer driver 16c and the cloud printing server 20c including this communication is IPP communication. Hereinafter, the description will be made on the premise that the user authentication is successful.

[0109] The general-purpose printer driver 16c converts the file to be printed into print data, which is data in a printable format, and sends a print job including the print data to the cloud printing service 24c (step S64). The cloud printing service 24c sends this print job to the printer A (31) corresponding to the virtual printer A (31v) (step S65).

[0110] Thereafter, the cloud printing service 24c periodically makes a request to the printer A (31) to obtain the JS (step S66) and receives the JS as a response (step S67). Also, the general-purpose printer driver 16c periodically makes a request to the cloud printing service 24c to obtain the JS (step S68) and receives the JS as a response (step S69). The general-purpose printer driver 16c causes the obtained JS to be displayed on the display unit so that the user U can view it (step S70).

[0111] (Other Variations) The present disclosure is not limited to the above-described embodiments and can be appropriately modified without departing from the spirit. For example, the system configuration of the printing system, the configuration of each device constituting the system, the configuration of each program included in each device, the processing procedure of each device, etc. are not limited to those illustrated, and as long as a part of the functions of the device or program and a part of the steps of the method are included so as to achieve the described effects.

[0112] For example, the virtual printer program may be a program that causes a computer to execute the following first process or second process. This first process includes a first communication process and a process of passing a print job obtained from a general-purpose printer driver in the first communication process to a print processing program that causes a printer connected to a cloud printing server via a network to perform printing. The second process includes a process of receiving a print job obtained by pretending to be a printer in a general-purpose printer driver and causing the printer to execute printing, and a communication process of communicating with a cloud printing server. Further, the second process includes a print process of transmitting the print job to the cloud printing server in the communication process and causing a printer connected to the cloud printing server via a network to perform printing. Alternatively, the second process is a print process of transmitting a print job obtained from a general-purpose printer driver by pretending to be a printer to the general-purpose printer driver and communicating with the general-purpose printer driver, and causing a printer connected to the print server via a network to perform printing based on the print job. Also, the printing method can be a method including the above first process or the above second process.

[0113] In the above-described embodiments and modifications, a printing system including a cloud printing server has been described. However, instead of the cloud printing server, other printing servers such as an on-premises printing server may be applied. For example, in the description of the printing system 100 described above, such a printing system can be described by replacing the cloud printing server 20 with an on-premises printing server and replacing cloud printing with on-premises printing. In this case, the network N1 and the network N2 can also be the same local area network.

[0114] That is, in the virtual printer program or the printing method, the printing process transmits the printing job obtained from the general-purpose printer driver in the first communication process to the printing server in the second communication process. Then, this printing process causes the printer connected to the printing server via the network to perform printing. According to such a printing system configuration, it is possible to execute printing via a printing server, such as cloud printing or on-premises printing, using a general-purpose printer driver like an OS-standard printer driver.

[0115] In addition, each device provided in the printing system according to the above-described embodiment can all be provided with a hardware configuration as follows, for example. Here, taking the example of FIG. 1, the devices include a terminal device, a cloud printing server, and a printer. FIG. 12 is a diagram showing an example of the hardware configuration of the device.

[0116] The device 1000 shown in FIG. 12 can include a processor 1001, a memory 1002, and an interface 1003. The interface 1003 can include, as required according to the device, for example, a communication interface or an interface with input / output devices.

[0117] The processor 1001 can be, for example, a CPU, a GPU, or an MPU (Micro Processor Unit) also referred to as a microprocessor. The processor 1001 may include a plurality of processors. The memory 1002 is configured by, for example, a combination of a volatile memory and a non-volatile memory. The functions in each device are realized by the processor 1001 reading the program stored in the memory 1002 and exchanging necessary information via the interface 1003 while executing.

[0118] In addition, when the above-described program is loaded into a computer, it includes a set of instructions (or software code) for causing the computer to perform one or more functions described in the embodiments. The program may be stored in a non-transitory computer-readable medium or a tangible storage medium. By way of example and not limitation, the computer-readable medium or tangible storage medium includes random-access memory (RAM), read-only memory (ROM), flash memory, solid-state drive (SSD), or other memory technologies. Also, by way of example and not limitation, the computer-readable medium or tangible storage medium includes CD-ROM, digital versatile disc (DVD), Blu-ray (registered trademark) disc, or other optical disk storage, magnetic cassette, magnetic tape, magnetic disk storage, or other magnetic storage devices. The program may be transmitted on a transitory computer-readable medium or a communication medium. By way of example and not limitation, the transitory computer-readable medium or communication medium includes electrical, optical, acoustic, or other forms of propagated signals.

[0119] As described above, the present invention has been described with reference to the above embodiments. However, the present invention is not limited only to the configurations of the above embodiments, and of course includes various modifications, corrections, and combinations that can be made by those skilled in the art within the scope of the invention of the claims of the present patent application.

Explanation of Reference Numerals

[0120] 10... Terminal device, 10a... User PC, 10b... User PC, 10c... User PC, 11... Control unit, 12... Memory unit, 13... Communication unit, 14... Operation unit, 15... Display unit, 16... General-purpose printer driver, 16a... General-purpose printer driver, 16b... General-purpose printer driver, 16c... General-purpose printer driver, 16u... Queue registration UI image, 17... Vendor assistance App, 18a... Virtual printer, 18b... Virtual printer program, 18c... Virtual printer, 20... Cloud printing server, 20a... Cloud printing server, 20b... Cloud printing server, 20c... Cloud printing server, 21... Control unit, 22... Memory unit, 23... Communication unit, 24... Cloud printing service, 24a... Cloud printing service, 24b... Cloud printing service, 24c... Cloud printing service, 25a... HTTP server, 25b... HTTP server, 26... IPP server, 31... Printer A, 31v... Virtual printer A, 32... Printer B, 33... Printer C, 40... UI image, 41... Button, 42... Button, 43... Button, 44... Button, 50... UI image, 51... Input field, 52... Input field, 53... Network setting button, 54... OK button, 55... Cancel button, 60... File, 100... Printing system, 100a... Printing system, 100b... Printing system, 100c... Printing system, 1000... Device, 1001... Processor, 1002... Memory, 1003... Interface, N1... Network, N2... Network.

Claims

1. A first communication process that pretends to be a printer to a general-purpose printer driver and communicates with the general-purpose printer driver; A second communication process that communicates with a print server; A printing process that transmits the print job obtained from the general-purpose printer driver in the first communication process to the print server in the second communication process, and causes the printer connected to the print server via a network to perform printing; A virtual printer program that causes a computer to execute.

2. The printing process includes a process of obtaining the status of the print job from the print server in the second communication process after causing the printing to be performed, and notifying the obtained status to the general-purpose printer driver in the first communication process. The virtual printer program according to Claim 1.

3. The printing process transmits the print job obtained from the general-purpose printer driver in the first communication process to the print server after conversion. The virtual printer program according to Claim 1 or 2.

4. The second communication process communicates with the print server via another application program installed on the computer. The virtual printer program according to Claim 1 or 2.

5. The first communication process pretends to be a printer having the capabilities of the printer obtained from the print server in the second communication process. The virtual printer program according to Claim 1 or 2.

6. On the computer, A process of setting the capabilities of the printer obtained from the print server in the second communication process in the general-purpose printer driver or the operating system of the computer, and defining the first communication process A program including is executed. The virtual printer program according to Claim 5.

7. On the computer, A process of setting the capabilities of the printer obtained from the print server in the second communication process in the virtual printer program, and defining the first communication process A program including is executed. The virtual printer program according to Claim 5.

8. A general-purpose printer driver, A first communication processing unit that pretends to be a printer to the general-purpose printer driver and communicates with the general-purpose printer driver; A second communication processing unit that communicates with a print server; A printing processing unit that transmits the print job obtained from the general-purpose printer driver by the first communication processing unit to the print server by the second communication processing unit, and causes a printer connected to the print server via a network to perform printing; A printing control device comprising the same.

9. A print job obtained from a general-purpose printer driver by pretending to be a printer to communicate with the general-purpose printer driver is transmitted to a print server, A printing process that causes a printer connected to the print server via a network to perform printing based on the print job A printing method including the same.

Citation Information

Patent Citations

  • Information processing device and control method for information processing device, and program

    JP2021043547A