US20120092719A1 - Centralized print job routing in a distributed printing environment - Google Patents
Centralized print job routing in a distributed printing environment Download PDFInfo
- Publication number
- US20120092719A1 US20120092719A1 US13/276,030 US201113276030A US2012092719A1 US 20120092719 A1 US20120092719 A1 US 20120092719A1 US 201113276030 A US201113276030 A US 201113276030A US 2012092719 A1 US2012092719 A1 US 2012092719A1
- Authority
- US
- United States
- Prior art keywords
- printer
- driver
- print server
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1204—Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1218—Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources
- G06F3/122—Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources with regard to computing resources, e.g. memory, CPU
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1224—Client or server resources management
- G06F3/1225—Software update, e.g. print driver, modules, plug-ins, fonts
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/126—Job scheduling, e.g. queuing, determine appropriate device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1285—Remote printer device, e.g. being remote from client or server
- G06F3/1288—Remote printer device, e.g. being remote from client or server in client-server-printer device configuration
Definitions
- Embodiments of the invention relate to computer network communication, and more particularly, printing in a dynamic roaming environment.
- Organizations often use a variety of computing devices.
- Various computer systems may use a thin-client or a virtual desktop display in conjunction with a centralized server or mainframe, and also use traditional workstations and handheld devices.
- a thin-client may be a computing device that includes hardware, software, or both in a client-server architecture network.
- a network may use a central server for processing and may transmit and receive input and output over a network or other communication medium established between the device and the remote server.
- a thin-client device may run web browsers or remote desktop software, such that significant processing may occur on the server.
- Printing in such environments may present a number of significant challenges. Traditionally, print drivers are stored and maintained on each device, and this can cause administrative overhead and maintenance issues. The problem may be exacerbated with mobile thin-clients and other mobile devices, as the number of drivers that may need to be stored can increase substantially as more printers become available.
- a distributed printing system includes multiple print servers, a data store, and a print router.
- the data store may include a first table of identifiers for printers, a second table of identifiers for print servers, and a third table of identifiers for multiple drivers.
- the data store may further store an association between identifiers of the first, second, and third tables.
- the print router may determine a printer selected for a print job, map a first identifier for a print server to the identified printer, and map a second identifier for a driver to the print server.
- a method of printing in a distributed environment includes determining a printer selected for a print job, mapping the selected printer to a print server in communication with the selected printer, and mapping a driver associated with the selected printer to the print server.
- a method of printing in a distributed environment includes storing multiple driver in a centralized data store, receiving a print job over a network, and identifying a printer selected for the print job.
- the selected printer is mapped to a print server in communication with the printer, and a driver in the centralized data store is mapped to the print server.
- the print job is then transmitted to the print server over the network.
- FIG. 1 is a block diagram illustrating a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention.
- FIG. 2 is a block diagram illustrating a central server computer system in a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention.
- FIG. 3 is a block diagram illustrating a data store in a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention.
- FIG. 4 is a block diagram illustrating a backend in a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention.
- FIG. 5 is a block diagram illustrating a logical path taken by print data in a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention.
- FIG. 6 is a block diagram illustrating a system for centralized print job routing in a distributed printing environment, according to various embodiments of the invention.
- FIG. 7 is a block diagram illustrating a system for centralized print job routing in a distributed printing environment, according to various embodiments of the invention.
- FIGS. 8A , 8 B, 8 C, 8 D, and 8 E are diagrams illustrating tables which may be stored in a centralized data store of a distributed printing environment, according to various embodiments of the invention.
- FIG. 9 is a block diagram of a print router in a distributed printing environment, according to various embodiments of the invention.
- FIG. 10 is a block diagram of a central server computer system in a distributed printing environment, according to various embodiments of the invention.
- FIG. 11 is a flowchart diagram of an illustrative method of centralized print job routing in distributed printing environment, according to various embodiments of the invention.
- FIG. 12 is a flowchart diagram of an illustrative method of centralized print job routing in distributed printing environment, according to various embodiments of the invention.
- FIG. 13 is a flowchart diagram of an illustrative method of centralized print job routing in distributed printing environment, according to various embodiments of the invention.
- FIG. 14 is a schematic diagram that illustrates a representative device structure that may be used in various embodiments of the present invention.
- identifiers for a number of printers, print servers, and drivers may be stored in first, second, and third tables of a data store, respectively.
- a print router maps the printer to a print server according to an association between an identifier for the selected printer and an identifier for the print server.
- the print router also maps the print server to a driver based on an association between the identifier for the print server and an identifier for the driver.
- various embodiments may omit, substitute, or add various procedures or components as appropriate.
- the methods may be performed in an order different than that described, and that various steps may be added, omitted or combined.
- aspects and elements described with respect to certain embodiments may be combined in various other embodiments.
- the following systems, methods, devices, and software may individually or collectively be components of a larger system, wherein other procedures may take precedence over or otherwise modify their application.
- system 100 includes a central server computer system 105 , a data store 110 , print servers 145 , and printers 150 . Each of these components may be in communication with each other, directly or indirectly.
- the central server computer system 105 may include a rules engine 130 , a session manager 135 , and a print router 140 .
- the central server computer system 105 may be made up of one or more server computers, workstations, web servers, or other suitable computing devices.
- the central server computer system 105 may be fully located within a single facility or distributed geographically, in which case a network may be used to integrate different components.
- the central server computer system 105 may receive a print job.
- the print job may be received from a windows session 125 .
- the print job may be received from an application session 115 via a backend 120 .
- the print job may also or alternatively be received from an application session 115 via a cloud computing environment (not specifically shown).
- the print job may be received from thin-clients (e.g., SUN RAY clients available from Oracle Corporation, WYSE clients available from Wyse Technology, etc.), thick clients (e.g., desktops, laptops), mobile devices, tablets, etc., although these devices are not specifically shown in the diagram
- the print job may be received from any type of desktop or virtual desktop environment.
- suitable desktop environments from which the print job may be received include, but are not limited to, LINUX environments based on the open-source Linux kernel; WINDOWS environments based on software available from Microsoft, Inc.; OS/X environments based on software available from Apple, Inc.; VMWARE virtual environments based on software available from VMware, Inc.; CITRIX virtual environments based on software available from Citrix Systems, Inc.; Windows Terminal Services/Remote Desktop virtual environments based on software available from Microsoft, Inc.; ANDROID environments based on software available from Google, Inc.; IOS environments based on software available from Apple, Inc.; WEBOS environments based on software available from Hewlett Packard Company; combinations thereof; and the like.
- the central server computer system 105 may receive notice or identification for a print job, and perform the functionality described herein based on such notice or identification only.
- Data store 110 may be a single database, or may be made up of any number of separate and distinct databases.
- the data store 110 may include one, or more, relational databases or components of relational databases (e.g., tables), object databases, or components of object databases, spreadsheets, text files, internal software lists, or any other type of data structure suitable for storing data.
- relational databases or components of relational databases e.g., tables
- object databases e.g., objects databases
- object databases e.g., or components of object databases
- spreadsheets e.g., text files, internal software lists, or any other type of data structure suitable for storing data.
- a data store 110 may each be multiple data storages (of the same or different type), or may share a common data storage with other data stores.
- the data store 110 may be distinct from a central server computer system 105 , in other embodiments it may be integrated therein to varying degrees.
- notification of a requested print job may be received at the central server computer system 105 .
- a session manager 135 may receive the notification, and may assign a terminal identifier (TID) to a device requesting the job.
- TID terminal identifier
- the central server computer system 105 may identify information about the print job (e.g., identification and location of the applicable print server 145 and printer 150 , and identification of the proper driver).
- Drivers for the print job may be transmitted to the appropriate print server 145 and to the client device requesting the job.
- the drivers may be installed, and the device and print server 145 may execute the print job with the installed drivers.
- the central server computer system 105 may access the data store 110 to distribute drivers to the print server 145 or the device, and thus in some embodiments the drivers do not need to be maintained on each device or print server 145 .
- the drivers may be taken down or uninstalled after each job, set of jobs, or period with no use.
- the central server computer system 105 may use the information about a print job to identify an appropriate operating system (OS) and print driver for the print server for a given print job.
- the central server computer system 105 may access the data store 110 to retrieve the OS and print driver, and load an OS in real-time in response to receiving a print job.
- the central server computer system 105 may install the appropriate driver, thus creating a virtual print server (which may, but need not be, print server 145 ).
- the virtual print server executes the print job. After the print job is complete, the driver and OS may be taken down.
- print servers may not be dynamically generated in response to individual print jobs or even at all. For example, the central server computer system 105 may distribute incoming print jobs among a fixed set of physical or virtual print servers 145 .
- the print servers 145 may be any real or virtual machine or environment that hosts a print driver for controlling a printer 150 .
- a print server 145 may be implemented by circuitry, logic, and/or software within the printer 150 .
- a print server 145 may include a real or virtual network server and/or a personal computing device in communication with a printer 150 .
- a printer 150 is selected (e.g., automatically or by a user).
- the print router 140 at the central server computer system 105 may receive the selection.
- the selected printer may be mapped to a 1) driver of a table of drivers, and 2) a print server 145 of a table of print servers.
- this mapping may be performed based on static relationships between printers, drivers, and print servers. For example, these static relationships may be stored as tables within the data store 110 .
- a rules engine 130 at the central server computer system 105 may be used in the selection of the printer.
- the rules engine 130 may be configured to dynamically map a print job to a print server 145 and printer 150 for the print job.
- the rules engine 130 may access a set of rules to determine the correct print server 145 and printer 150 for the print job.
- the rules may dynamically make this determination based on the location of the device.
- the type of device, attributes of the print job, and other factors may be used by the rules engine 130 to determine the correct type and location for the print server 145 and printer 150 .
- This rules engine 130 functionality may not be necessary in all embodiments of the invention to identify an appropriate printer 150 , print server 145 , or driver for a print job. Accordingly, the rules engine 130 may be eliminated from certain embodiments.
- feedback from a printer 150 is received at the print server 145 , and then forwarded on to a print router 140 .
- the print router 140 may route the feedback (e.g., job failed, out of ink, out of paper, etc.) to the client device.
- This report may be in the form of a dialogue box.
- the feedback may be routed to avoid the backend 120 , even when the print job is initially routed through the backend 120 .
- a client device may direct or route a print job. This routing may be to a new printer, or may call up alternative functionality (e.g., a new tray) for a printer that is already in use.
- print jobs (e.g., sent through a backend 120 ) may be controlled by two-way communication between the print router 140 and the device.
- the components of the system 100 may be directly connected, or may be connected via a network (not shown), which may be any combination of the following: the Internet, an IP network, an intranet, a wide-area network (“WAN”), a local-area network (“LAN”), a virtual private network, the Public Switched Telephone Network (“PSTN”), or any other type of network supporting data communication between devices described herein, in different embodiments.
- a network may include both wired and wireless connections, including optical links. Many other examples are possible and apparent to those skilled in the art in light of this disclosure.
- a network may or may not be noted specifically. If no specific means of connection is noted, it may be assumed that the link, communication, or other connection between devices may be via a network.
- Session manager 135 may include an API architecture which serves as the communication control point, managing virtual desktop sessions and brokering sessions for clients to backend 120 virtual desktop and application sessions.
- the session manager 135 may broker and pass through mechanisms for client devices to active virtual sessions.
- the central server computer system 105 may include a centralized management console (not shown), which may be a web-based management console for configuration, real time monitoring, and reporting. There may be management capabilities for the entire virtual desktop/application environment.
- FIG. 2 shows a block diagram of a central server computer system 105 - a .
- the central server computer system 105 - a may be one example of the central server computer system 105 in FIG. 1 .
- the central server computer system 105 - a shown in FIG. 2 includes a rules engine 130 , a session manager 135 , a print router 140 - a , and a print server manager 205 .
- the rules engine 130 and the session manager 135 shown in FIG. 2 may be substantially the same as the rules engine 130 and the session manager 135 shown in FIG. 1 .
- the print router 140 - a may be one example of the print router 140 shown in FIG. 1 .
- the print router 140 - a may match print jobs received from external sessions 115 , 125 to one or more destination printers 150 and/or print servers 145 . To accomplish these tasks, the print router 140 - a may include at least a print data receiving module 210 , a print source identification module 215 , a print parameters identification module 220 , a printer destination identification module 225 , and a printer feedback routing module 230 .
- the print data receiving module 210 may be configured to receive print data corresponding to a print job from an external session 115 , 125 via a communication channel established by the session manager 135 .
- the print data received from the external session 115 , 125 may be in the form of one or more page description languages (PDLs).
- PDLs page description languages
- Examples of page description languages that may be received at the receiving module 210 include, but are not limited to, PostScript, Portable Document Format (PDF), Printer Command Language (PCL), Scalable Vector Graphics (SVG), Open XML Paper Specification (XPS), and any other page description language that may suit a particular implementation of the principles described herein.
- the print data received from the external session 115 , 125 may be in the form of text or images for use with a standard template stored by a print server 145 or a printer 150 .
- the print data may be used to print a personalized bracelet worn by a patient in a medical facility.
- the print data may include text corresponding to the name of the patient, and the name of the patient's doctor. This text, when received by a print server 145 or a printer 150 , may be applied to a standard bracelet template to print a bracelet having the name of the patient and the name of the patient's doctor.
- the print data received by the print data receiving module 210 may be in the form of an image that has already been rasterized by the external session 115 , 125 in preparation for delivery to a printer 150 .
- the print data receiving module 210 may be configured to cache the received print data at a designated storage area.
- the designated storage area may be in a data store 110 .
- the cached print data may be accessible to the rules engine 130 or any other module or process.
- the print source identification module 215 may be configured to analyze the received print data to determine certain attributes or characteristics of the received print data. These attributes or characteristics may also be stored for use by the other modules or processes. For example, the print source identification module 215 may associate the received print data with a format in the data store 110 . This format information may be available to the rules engine 130 for use in enforcing one or more rule sets.
- the print source identification module 215 may analyze the print data received by the print data receiving module 210 to determine a source of the print data.
- the source may be determined using information from the session manager 135 , information acquired by the print data receiving module 210 , and/or information attached to the print data itself by the source.
- the identity of the print source may be associated with the received print data.
- the identity of the print source may be stored in the data store 110 .
- the print parameters identification module 220 may identify certain print parameters for the received print data. These print parameters may be included with the received print data and/or determined by logical deduction (e.g., using the rules engine 130 ). For instance, a user of an external session 115 , 125 may specify a particular print parameter which may be transmitted to the central server computer system 105 - a with the print data or logically deduced from the received print data. Additionally or alternatively, certain default print parameters may be determined for the print data based on the identity of the source of the print data and/or another attribute associated with the print data.
- print parameters examples include, but are not limited to, a selected type of printing media, a selected size of printing media, a selected source of printing media, an ink or toner color setting, a collation setting, a staple setting, a duplex setting, a scaling setting, combinations thereof, and the like.
- the printer destination identification module 225 may be configured to identify an appropriate destination printer 150 and/or print server 145 for print data received at the print data receiving module 210 .
- the printer destination identification module 225 may identify the appropriate destination printer 150 based on one or more attributes of the print data.
- the printer destination identification module 225 may pass certain attributes of the print data (e.g., the identity and/or location of the source of the print data determined by the print source identification module 215 , the print parameters determined by the print parameters identification module 220 , etc.) to the rules engine 130 .
- the rules engine 130 may apply a certain set of predetermined or dynamically updated rules to the input it receives from the printer destination identification module 225 to determine the destination printer 150 and/or print server 145 for the print data.
- the destination printer 150 and/or print server 145 determined by the rules engine 130 may then be returned to the printer destination identification module 225 .
- the printer destination identification module 225 may identify the appropriate destination printer 150 based on static associations between certain attributes and certain destination printers 150 .
- the print data forwarding module 230 may be configured to forward the print data on to the identified printer 150 and/or print server 145 .
- the print data may be forwarded over a local connection and/or over a network or logical connection.
- the print data forwarding module 230 may be configured to receive feedback from a printer 150 and/or a print server 145 about a specific print job and process the feedback and/or forward the feedback to a third party, such as the source of that particular print job.
- the print server manager 205 of the central server computer system 105 - a may handle certain aspects related to the distribution of drivers for printers to the print servers 145 and the general maintenance of the print servers 145 . Accordingly, the print server manager 205 may include a driver identification module 235 , a driver deployment module 240 , an operating system identification module 245 , and a print server instantiation module 250 .
- the driver identification module 235 may, in response to a set of print data being assigned to a particular printer 150 , determine an appropriate driver for that printer 150 .
- the appropriate driver may be selected from a central repository of drivers stored, for example, at data store 110 .
- the driver identification module 235 may be further configured to determine whether an appropriate driver for the selected printer 150 is already installed on a print server 145 chosen to send the print data to the selected printer 150 .
- the driver identification module 235 may compare a version of the driver stored by the chosen print server 145 with a version of the driver stored at the central repository to determine whether the driver stored by the chosen print server 145 is current.
- the driver deployment module 240 may install the appropriate driver on the print server 145 .
- the driver deployment module 240 may access and write to storage associated with the print server 145 via a local connection, network connection, and/or a logical connection to install the appropriate driver to the print server 145 .
- the operating system identification module 245 may be configured to identify an appropriate operating system associated with an appropriate driver for the selected printer 150 .
- the print server instantiation module 250 may instantiate a new print server 145 .
- the newly instantiated print server 145 may be created on a dedicated or virtual machine by loading the appropriate operating system to the dedicated or virtual machine.
- an operating system image having the appropriate driver preinstalled may be used to instantiate the new print server 145 .
- FIG. 3 is a block diagram of one example of a data store 110 - a that may be associated with a central server computer system 105 .
- the data store 110 - a shown in FIG. 3 may be an example of data store 110 shown in FIG. 1 .
- data store 110 - a may store drivers 305 , libraries 310 , device configurations 315 , tables 320 , rules 325 , and operating system images 330 .
- Data store 110 - a may maintain a repository of drivers 305 for various printers 150 supported by a distributed printing system 100 .
- the central server computer system 105 may associate the print job with a specific printer 150 , dynamically access the data store 110 to retrieve a driver 305 appropriate for the specific printer, and provide the retrieved driver 305 to a print server 145 associated with the specific printer.
- drivers 305 are stored centrally at data store 110 - a , individual machines implementing sessions 115 , 125 and individual print servers 145 need not store a local print driver for each printer supported by the system 100 . Moreover, as updated versions of drivers 305 become available, a network administrator may make the updated versions available to each print server 145 in the system by simply updating the repository of drivers 305 stored at the data store 110 - a , thereby avoiding the need to roll out driver updates to each print server 145 separately.
- the data store 110 - a may also store software libraries 310 .
- the data store 110 - a may store libraries 310 associated with the drivers 305 .
- the libraries 310 may include Dynamic-Link Library (DLL) or Dynamic Shared Object (DSO) files that allow the print servers 145 to dynamically communicate with the sessions 115 , 125 which generate the print jobs sent to printers 150 .
- DLL Dynamic-Link Library
- DSO Dynamic Shared Object
- the DLL(s) files may allow the print server 145 to provide feedback to a session 125 from which a print job originates in a way that is understandable to the session 125 . For instance, if a user of the session 125 generates the print job using a print Graphical User Interface (GUI), the DLL transmitted to the print server 145 may allow the print server 145 to provide feedback to the user of the session 125 through the print GUI.
- GUI Graphical User Interface
- a print job generated by a session 125 has been sent to a print server 145 for printing by a specific printer 150 , and that the printer 150 is out of paper.
- the printer 150 may send a feedback message to the print server 145 indicating that the printer 150 is out of paper, and the print server 145 may provide this feedback message to a print dialog window in the session 125 using a DLL received from the central server computer system 105 .
- This process may allow for a more seamless printing experience for a user of session 125 , despite the fact that the session 125 may not locally store a print driver or DLL for communicating with the printer 150 .
- the data store 110 - a may also store device configurations 315 , such as settings configurations for printers 150 .
- the central server computer system 105 may also include in the transmission a configuration 315 retrieved from the data store 110 - a for that printer 150 .
- the configuration 315 may specify, for example, settings such as printer margin settings, duplex settings, paper tray settings, ink color settings, collation settings, and the like.
- the configuration 315 transmitted to the print server 145 by the central server computer system 105 may be specific to the printer 150 , the session 115 , 125 generating the print job, and/or the character or content of the print job itself.
- the data store 110 - a may store and maintain various tables 320 .
- the tables 320 may reflect certain relationships present in the system 100 .
- the tables 320 may include one or more tables 320 associating specific sessions 115 , 125 with terminal identifiers or node identifiers, one or more tables 320 associating specific sessions 115 , 125 with physical locations, one or more tables 320 associating specific printers 150 or print servers 145 with physical locations, one or more tables 320 associating specific sessions 115 , 125 with default printers 150 , and/or one or more tables 320 tracking any other association in the system 100 that may suit a particular implementation of the principles described herein.
- two or more of the tables 320 stored by the data store 110 - a may be interrelated in such a way that allows for logical deductions in routing print jobs to print servers 145 or other useful purposes.
- the data store 110 - a may include: a) a first table 320 associating each terminal identifier at a port with a particular session 115 , 125 at a specific physical location; and b) a second table 320 associating each physical location for a session 115 , 125 with a default printer 150 .
- the information in the first table 320 and the second table 320 may be used by the central server computer system 105 to associate a print job received at a port with a specific default printer 150 .
- the data store 110 - a may also include one or more rules 325 for use by the central server computer system 105 in routing received print jobs to print servers 145 and printers 150 .
- the rules engine 130 of the central server computer system 105 may be configured to dynamically map a print job to a print server 145 and printer 150 for the print job by accessing the set of rules 325 stored in the data store 110 - a .
- the rules 325 may take into account factors such as the location of the device generating the print job, the type of device generating the print job, attributes of the print job, and other factors. Some of these factors may be stored in the tables 320 .
- the data store 110 - a may include one or more operating system images 330 .
- the operating system images 330 may be used, for example, in the dynamic creation of print servers 145 .
- certain drivers 305 may not be compatible with the standard operating systems executed by typical print servers 145 in the system 100 . Accordingly, when a print job is indicated for a printer 150 using one of these drivers 305 , the central server computer system 105 may retrieve a compatible operating system image 330 from the data store 110 - a and instantiate a new print server 145 by loading the operating system image 330 onto a real or virtual machine. The newly instantiated print server 145 may then receive the print job from the central server computer system 105 and control the indicated printer 150 using the appropriate driver 305 to complete the print job.
- FIG. 4 a block diagram is shown of an illustrative backend 120 - a for use in a distributed printing system 100 .
- the backend 120 - a shown in FIG. 3 may be an example of the backend 120 shown in FIG. 1 .
- the backend 120 - a may be configured to forward print data 405 to a next destination in the printing pipeline, such as a central server computer system 105 , a print server 145 , or a printer 150 , as described in more detail below.
- the backend 120 may include a receiving module 410 to receive the print data 405 from an application session 115 , a backend routing module 415 for determining the next destination of the print data 405 , and a transmission module 425 to transmit the print data 405 to the determined next destination.
- the backend 120 - a may also include a rasterization module 420 for rasterizing the print data 405 prior to transmitting the print data 405 to the central server computer system 105 .
- the receiving module 410 of the backend 120 - a may be configured to receive the print data 405 over a channel of communication with the application session 115 .
- the channel of communication may include one or more local connections (e.g., serial ports, parallel ports, etc.) between the backend 120 - a and a device implementing the application session 115 .
- the channel of communication may include one or more network connections (e.g., Ethernet, WiFi, etc.) and/or logical connections (e.g., where the receiving module 410 of the backend 120 - a and the application session 115 are implemented by the same physical machine).
- the receiving module 410 may also identify the application session 115 providing the print data 405 . For example, the receiving module 410 may monitor a number of ports associated with various application sessions 115 . Each of the application sessions 115 may be assigned a terminal identifier or a node identifier. Thus, when print data 405 is received, the receiving module 410 may take note of the terminal identifier, the node identifier, and/or the port on which the print data is received to associate the print data 405 with a known application session.
- the backend routing module 415 may determine the next destination of the print data 405 based on the application session 115 from which the print data 405 was received. To this end, the destination identification module 415 may maintain a table associating specific application sessions 115 with specific destinations. In certain examples, such as in the system 100 of FIG. 1 , all print data 405 received at the backend 120 - a , regardless of source, may be transmitted by the backend 120 - a to a single central server computer system 105 .
- the backend 120 - a may be communicatively coupled to a number of separate central server computer systems 105 such that print data 405 from different application sessions 115 is transmitted by the backend to different central server computer systems 105 .
- the backend 120 - a may be communicatively coupled to one or more central server computer systems 105 in addition to one or more print servers 145 such that print data 405 from some application sessions 115 is transmitted to a central server computer system 105 and print data 405 from other application sessions 115 is transmitted directly to a print server 145 .
- the backend routing module 415 may determine the next destination of each instance of print data 405 based on the application session 115 from which the print data 405 was received.
- the backend routing module 415 may further include logic for dynamically determining in real-time how a print job is to be routed. For example, based on certain characteristics of the print data 405 , the backend routing module 415 may determine that it would be more appropriate to forward the print data 405 to a central server computer system 105 than to a print server 145 or printer 150 . Additionally or alternatively, in examples where the backend 120 - a is communicatively coupled to multiple alternative central server computer systems 105 , the backend routing module 415 may perform load balancing in its distribution of different print jobs between the separate central server computer systems 105 .
- the backend 120 - a may include a rasterization module 420 .
- the rasterization module 420 may convert the received print data 405 into a raster image that can be understood by a printer.
- the print data 405 may already have been rasterized by the application session 115 from which the print data 405 was received.
- the print data 405 may be rasterized at a print server 145 prior to printing.
- the transmission module 425 of the backend 120 - a may transmit the received print data 405 to the destination determined by the next destination identification module 415 . This transmission may occur over one or more local connections (e.g., serial ports, parallel ports), one or more network connections (e.g., Ethernet, WiFi), and/or one or more logical connections (e.g., where the backend 120 and the next destination are implemented by the same physical machine).
- local connections e.g., serial ports, parallel ports
- network connections e.g., Ethernet, WiFi
- logical connections e.g., where the backend 120 and the next destination are implemented by the same physical machine.
- FIG. 5 illustrates a diagram of one illustrative path 500 of print data 405 through a distributed printing system.
- the print data 405 may first be generated and transmitted to a central server computer system 105 - b by a session 125 .
- the central server computer system 105 - b may be an example of the central server computer system 105 of FIG. 1 or FIG. 2 .
- the session 125 may include an application executed by a host device.
- a user of the application issues a command to print data generated or hosted by the application.
- the session 125 may transmit the print data 405 directly to the central sever computer system 105 - b .
- the session 125 may utilize a backend 120 to transmit the print data 405 to the central server computer system 105 .
- the central server computer system 105 - b may perform session identification 510 to determine the source of the print data 405 .
- the central server computer system 105 - b may look up a terminal identifier and/or a port associated with the print data 405 in a table to identify a device from which the print data 405 originated.
- the central server computer system 105 - b may perform print routing 515 on the print data 405 to select an appropriate printer 150 - a for the print data 405 .
- the printer 150 - a may be an example of one of the printers 150 shown in FIG. 1 .
- the print routing 515 may include applying a set of rules to one or more parameters associated with the print data 405 and/or the identified session 125 .
- the central server computer system 105 - b may retrieve 520 an appropriate driver 305 - a for the identified printer 150 - a from a data store 110 .
- the driver 305 - a may be transmitted, together with the print data 405 , from the central server computer system 105 - b to a print server 145 - a associated with the identified printer 150 - a .
- the print server 145 - a may be an example of the print server 145 shown in FIG. 1 .
- the print server 145 - a may be dynamically instantiated in response to a particular printer 150 - a being selected for the print data 405 .
- the print server 145 - a may install 530 the driver 305 - a received from the central server computer system 105 - b to enable the print server 145 - a to communicate with the selected printer 150 - a . Additionally, the print server may perform spooling 535 operations to receive and collect the print data 405 , scheduling 540 operations to schedule the print data 405 for printing by the printer 150 - a , and one or more conversion 545 operations to transform the print data into a format understood by the printer 150 - a . In certain examples, the conversion 545 operations may include rasterization of the print data 405 . The print server 145 - a may then transmit the print data 405 to the selected printer 150 - a over a local connection, a network connection, and/or a logical connection for printing.
- FIG. 6 illustrates an example of a system 600 for print routing according to various embodiments of the invention.
- the system 600 includes a device 605 , a print router 140 - b , print servers 145 , and printers 150 . Each of these components may be in communication with each other, directly or indirectly.
- This system 600 may be an example of the system 100 described above with reference to FIG. 1 and/or the system 300 described above with reference to FIG. 3 , and the print router 140 - b may be a part of the central server computer system 105 of FIG. 1 or 3 .
- a user of device 605 may select a printer 150 from a table or drop down menu (or the printer may be selected automatically).
- the device 605 may transmit print data 405 - a for a print job.
- the print data 405 - a may include the image data for the print job and metadata.
- the metadata associated with the print job may include, but is not limited to, at least one of a type associated with the device 605 , a network identifier (e.g., a port, network address, or name) associated with the device 605 , the printer selection, a network identifier associated with a selected printer 150 , a location associated with the device 605 , a location associated with a selected printer 150 , or any other data that may suit a particular implementation of the principles described herein.
- a type associated with the device 605 e.g., a port, network address, or name
- the print data 405 - a may come from sources other than the device 605 .
- a user of the device 605 may control the printing of data stored elsewhere, thereby controlling the generation of print data 405 - a .
- the print data 405 - a may otherwise be linked to a selected printer of a number of printers 150 in the system 600 .
- the print data 405 - a may be directed to a particular port number, and the port number may be associated with a selected printer 150 .
- the print data 405 - a may be transmitted from or to a particular port number associated with a selected printer 150 .
- the print data 405 - a may be associated with other types of addressing or identifiers to indicate a selected or default printer 150 (e.g., a network address for the printer, or a location identifier to be used by a rules engine for printer selection).
- a selected or default printer 150 e.g., a network address for the printer, or a location identifier to be used by a rules engine for printer selection.
- the print data 405 - a may be transmitted through a backend (e.g., the backend 120 of FIG. 1 ) or through a cloud computing environment to the print router 140 - b .
- the print data 405 - a may be transmitted directly (or through a network) to the print router 140 - b (e.g., in a windows environment).
- the print router 140 - b may receive the print data 405 - a including a port number or other network identifier, and may identify the printer 150 to be used based on the port number or other network identifier.
- the print router 140 - b may process other received information included or associated with the print data 405 - a to identify the printer 150 .
- the print router 140 - b may receive information identifying a printer 150 , or may process a portion of the print data 405 - a to identify the printer 150 .
- the print router 140 - b may identify a particular print server 145 and driver(s) associated with the selected printer 150 (e.g., if printer 150 - b is selected, the print router 140 - b may identify print server 145 - b , and drivers to be used for the print server 145 - b and device 605 ).
- the drivers may be retrieved and distributed to the print server 145 (e.g., by the print router 140 - b or another server, such as the central server computer system 105 of FIG. 1 or 3 ), and the drivers may be installed.
- the print router 140 - b may transmit or otherwise provide the print data 405 - a to an identified print server 145 .
- a print server 145 may process and format the print data, and transmit the processed data to a printer 150 for printing.
- the print server 145 may be a virtual print server, and thus both the print router 140 - b and print server 145 may be part of the central server computer system 105 of FIG. 1 , 2 , or 5 .
- FIG. 7 illustrates another example of a system 700 for print routing according to various embodiments of the invention.
- the system 700 includes a device 605 - a , a print router 140 - c , a data store 110 - b , and print servers 145 - e and 145 - f. Each of these components may be in communication with each other, directly or indirectly.
- Data store 110 - b includes printer table 705 , print server table 710 , and driver table 715 .
- the data store 110 - b may be an example of the data store 100 , 110 - a described with reference to FIG. 1 or 3 .
- the data store 110 - b may be a component of the print router 140 - c and/or a central server computer system 105 .
- This system 700 may be the system 100 described with reference to FIG. 1 , and the print router 140 - b may be a part of the central server computer system 105 of FIG. 1 or 5 .
- This system 700 may also be an example of the system 600 described with reference to FIG. 6 .
- Device 605 - a may transmit print data 405 - b for a print job to print router 140 - c .
- the print data 405 - b in this example includes metadata.
- the metadata may include, but is not limited to, at least one of: a device 605 - a type or identification, printer identifiers or links, network addresses, device and printer location, other types of network identifiers, or other data.
- the print data 405 - b may include identification of (or include links to) a selected printer.
- the print data 405 - b may be directed to or transmitted from a particular port number, and the port number may be associated with a selected printer.
- the print data 405 - b may be associated with other types of addressing or network identifiers to indicate a selected or default printer.
- the data store 110 - b includes a printer table 705 , print server table 710 , a driver table 715 , and a mapping association 720 that includes mappings between individual entries in the printer table 705 , the print server table 710 , and the driver table 715 .
- the printer table 705 may include identifiers for multiple printers (e.g., printer 150 of FIG. 1 , 5 , or 6 ) in the system 700 .
- the print server table 710 may include identifiers for multiple print servers (e.g., print servers 145 of FIG. 1 , 5 , or 6 )
- the driver table 715 may include identifiers for multiple drivers (e.g., drivers 305 of FIG. 3 or 5 ) used by the system.
- the mapping association 720 may store associations between identifiers of the printer table 705 , the print server table 710 , and the driver table 715 .
- For each printer 150 there may be a hierarchy or varied favorability for different print servers 145 .
- the driver table 715 may have drivers 305 for the device 605 - a and for print servers 145 .
- the print router 140 - c may receive an identification of a printer 150 , and associate a print server 145 and drivers with the identified printer 145 based on links between tables 605 , 610 , and 615 .
- the print router 140 - b or other components of system 700 may distribute the drivers and forward the print data 405 - b accordingly.
- FIGS. 8A , 8 B, 8 C, 8 D, and 8 E show examples of tables that may be stored by a data store 110 - b to track the association between identifiers in a printer table 705 , a print server table 710 , and a driver table 715 .
- the tables of FIGS. 8A and 8B may be stored, for example in the data store 110 - b of FIG. 7 .
- printers there are columns for printers, print servers, and drivers, respectively.
- printer C is associated with print server 2 and with driver C 1 .
- the print job may be mapped to print server 2 based on the association in the table between the identifier “C” in the printer column with the identifier “ 2 ” in the print server column.
- the driver C 1 may be mapped to print server 2 based on the association in the table between the identifier “C 1 ” in the driver column and the identifier “ 2 ” in the print server column. In this way, the print job may be sent to print server 2 , which may cause printer C to print the job using driver C 1 .
- additional identifiers such as a location identifier and a print job type identifier, may also factor into the association of a printer 150 with a print server 145 and a driver 305 .
- print jobs of type 1 may be associated with printer A for location I, with printer D for location II, and with printer E for locations III and IV.
- printer A is a general purpose black and white printer
- printer B is a color ink jet printer
- printer C is a special-purpose printer of patient identification bracelets.
- black and white print jobs e.g., type 1
- color print jobs e.g., type 2
- patient bracelet print jobs e.g., type 3
- a print job of type 1 sent to printer D by print server 2 may use driver D 1
- a print job of type 2 sent to printer D by the same print server may use driver D 2 .
- driver D 1 a print job of type 1 sent to printer D by print server 2
- driver D 2 a print job of type 2 sent to printer D by the same print server
- an identification card-specific driver e.g., driver D 1
- the print server e.g., print server 2
- an identification card print job e.g., a print job of type 1
- a bracelet-specific driver e.g., driver D 2
- the print server e.g., print server 2
- a bracelet print job e.g., a print job of type 2
- static data from separate tables may be logically combined into inferred tables for print routing.
- inferred tables For print routing, consider the tables shown in 8 C, 8 D, and 8 E.
- the table of FIG. 8C tracks a known association between a terminal ID and port number for received data with a session and a location of a device implementing the session.
- a terminal ID and port number for received data with a session and a location of a device implementing the session.
- the print data is from session M at location 2 based on the table.
- the print data is from session N at location 3 based on the table.
- the table of FIG. 8D tracks a default printer for different sessions at different locations.
- the default printer for that print data is printer A according to the table.
- the default printer for that print data is printer B according to the table.
- the table of FIG. 8E combines the data from the tables of FIG. 8C and FIG. 8D to create inferred associations between ports and printers. If each session of the present example transmits print data at a different port, it can be inferred from the tables of FIG. 8C and FIG. 8D that print data received at port 9100 should be directed to printer A and that print data received at port 9101 should be directed to printer B, absent any indication to the contrary received in connection with the print data.
- FIG. 9 illustrates one example of a print router 140 - d consistent with the foregoing principles.
- the print router 140 - d may include a printer selection identification module 905 , a print server mapping module 910 , and a driver mapping module 915 . Each of these components may be in communication, directly or indirectly.
- the print router 140 - d may be an example of the print router 140 described with reference to FIG. 1 , 2 , 6 , or 7 .
- the printer selection identification module 905 may include logic for identifying a printer (e.g., printer 150 of FIG. 1 , 5 , or 6 ) selected for a particular print job.
- the printer 150 may be selected in connection with the generation of print data for the print job. For instance, a user of a device (e.g., device 605 of FIG. 6 or 7 ) may be prompted to select a printer 150 when generating a print job at the device. The user selection may be transmitted to the print router 140 - d and identified at the printer selection identification module 905 .
- the printer selection identification module 905 may identify the selection of a printer 150 by receiving metadata associated with the print data, where the metadata specifies the printer 150 selected for the print job. In this example, the printer selection identification module 905 may simply read the metadata to identify the printer selection.
- the printer selection identification module 905 may identify the printer selection by inference. In certain embodiments, the printer selection identification module 905 may identify the printer selected for the print job by receiving a network identifier (e.g., a network address or a port number) associated with the print job and determining that the network identifier is associated with the printer.
- a network identifier e.g., a network address or a port number
- the printer selection identification module 905 may receive a location identifier associated with the print job.
- the location identifier may identify a location of the device generating the print job and/or a desired printing location.
- the printer selection identification module 905 may then identify the selected printer based on a stored association between the location identifier and the selected printer.
- the printer selection identification module 905 may identify the printer 150 selected for the print job using a combination of direct and inferential identification techniques. For example, metadata associated with the print job may specify a certain type of printer. The type of the printer, in combination with the identification of the port at which the print job is received, may identify the printer selection.
- the print server mapping module 910 may include logic for mapping the selected printer 150 , as identified by the printer selection identification module 910 , to a specific print server 145 .
- the print server mapping module 910 may map the selected printer 150 to the print server 145 by accessing a data store (e.g., data store 110 of FIG. 1 , 3 , or 7 ).
- the data store 110 may store a mapping association 720 that associates the selected printer 150 with a print server 145 .
- the print server mapping module 910 may communicate with the data store 110 to search one or more tables or other data structures in the data store 110 for an identifier of the selected printer 150 .
- the identifier of the selected printer 150 may be associated in the data store 110 with an identifier for the print server 145 .
- the data store 110 may be more intelligent, and the print server mapping module 910 may simply query the data store 110 with an identifier for the printer 150 to obtain an identifier for the print server 145 .
- the driver mapping module 915 may include logic for mapping a driver (e.g., from drivers 305 of FIG. 3 ) to the print server 145 .
- the driver 305 may be a custom driver created specifically for the selected printer 150 or for a certain printer type. As such, mapping the driver to the print server 145 may include determining that the selected printer 150 is of a certain type and determining that a driver 305 is associated with that type of printer. Additionally or alternatively, the driver 305 may be a generic driver 305 that is operable to control multiple types of printers. In still other examples, the driver 305 may be a driver 305 specific to the print server 145 or an operating system of the print server 145 .
- the driver mapping module 915 may communicate with data store 110 to determine that the driver 305 is associated with the selected printer 150 . For example, the driver mapping module 915 may search or query the data store 110 to identify a driver matching the printer 150 . In some examples, the driver mapping module 915 may determine that the selected printer 150 is of a certain type (e.g., vendor, model, feature set) and search or query the data store 110 for drivers 305 matching that type to identify an appropriate driver 305 to map to the print server 145 .
- a certain type e.g., vendor, model, feature set
- Mapping a driver 305 to the print server 145 may further include searching or querying the data store 110 to determine that an appropriate driver 305 for the print server 145 individually, for a type associated with the print server 145 , and/or for an operating system of the print server 145 .
- the print server mapping module 910 has mapped the printer 150 to a print server 145
- the driver mapping module 915 has mapped an appropriate driver 305 to the print server 145
- the print server 145 may transmit the print job to the selected printer 150 using the driver 305 .
- FIG. 10 illustrates one example of central server computer system 105 - c that may be used in a distributed printing system 100 , such as the systems 100 , 600 , 700 of FIG. 1 , 6 , or 7 .
- the central server computer system 105 - c may be an example of the central server computer systems 105 of FIG. 1 , 2 , or 5 .
- the central server computer system 105 - c may include a rules engine 130 , a session manager 135 , a print router 140 - e , and a print server manager 205 - a . Each of these components may be in communication, directly or indirectly.
- the rules engine 130 and the session manager 135 may function substantially as described above in FIG. 2 .
- the print router 140 - e may be an example of the print router 140 - d described with reference to FIG. 1 , 2 , 6 , 7 , or 9 .
- the print router 140 - d may include a printer selection identification module 905 , a print server mapping module 910 , and a driver mapping module 915 that perform substantially the same functionality as described above with reference to FIG. 9 .
- the print router 140 - e may include a print job receiving module 1005 , a metadata interpretation module 1010 , a print job transmission module 1015 , and a driver notification module 1020 .
- the print job receiving module 1005 may be configured to communicate with a device (e.g., device 605 of FIG. 6 ) generating print data for a print job to receive the print data.
- the print data may include the actual data to be printed in addition to metadata.
- the metadata may include data not for printing that is associated with the print job to convey certain attributes of the print job.
- the metadata may include direct or indirect information indicating a printer selection for the print job.
- the metadata interpretation module 1010 may receive and parse the metadata, passing information relevant to the printer selection to the printer selection identification module 905 .
- the print job transmission module 1015 of the print router 140 - e may forward some or all of the print data received at the print job receiving module 1005 to the print server (e.g., print server 145 of FIG. 1 , 5 , 6 , or 7 ) mapped to the selected printer (e.g., printer 150 of FIG. 1 , 5 , 6 , or 7 ) by the print server mapping module 910 .
- the print data may be forwarded to the print server 145 over one or more local connections, network connections, logical connections, and/or combinations thereof.
- the print server manager 205 - a may be configured to coordinate the installation and use of drivers 305 by specific print servers 145 .
- the print server manager 205 - a may include a driver notification module 1025 , a driver deployment analysis module 1030 , and a driver deployment module 1035 .
- the driver notification module 1025 may include logic for notifying a print server 145 of the identity of the driver 305 mapped to the print server 145 for the print job. For example, the driver notification module 1025 may receive an identifier of the driver 305 from the driver mapping module 915 and forward the identifier to the print server 145 . Upon receiving the identifier of the driver 305 , the print server 145 may know to use that driver 305 for the print job.
- the driver deployment analysis module may include an installation detection submodule 1040 and an update analysis submodule 1045 .
- drivers 305 for print jobs may be centrally distributed to print servers 145 from the central server computer system 105 - c on a per-print job basis, an as-needed basis, and/or another basis.
- the installation detection submodule 1040 may communicate with the print server 145 to determine whether the print server 145 already has that driver 305 installed. Where the print server 145 has a version of the driver 305 installed that is different from the version stored by the central server computer system 105 - c , the update analysis submodule 1045 may determine whether an update to the driver installed on the print server 145 is merited. If the print server 145 does not have the driver 305 installed or has an incorrect version of the driver 305 installed, the driver deployment module 1035 may communicate with the print server 145 to write the correct version of the driver 305 into the local storage of the print server 145 .
- the print server 145 may manage driver installation on its own. For example, the print server 145 may receive notification from the driver notification module 1025 that a certain driver 305 has been mapped to the print server 145 for use with a selected printer 150 on a print job. In response to the notification, the print server 145 may search its local storage to determine whether that driver 305 is already installed on the print server 145 . If the print server 145 does not have the driver installed, or if an incorrect or out-of-date version of the driver is installed, the print server 145 may request the driver from the central server computer system 105 - c or another source.
- FIG. 11 illustrates one example of a method 1100 of centralized print distribution in a distributed printing environment.
- the method 1100 of FIG. 11 may be performed, for example, by the print router 140 of FIG. 1 , 2 , 5 , 6 , 7 , 9 , or 10 and/or by the central server computer system 105 of FIG. 1 , 2 , 5 , 7 , or 10 .
- a printer selected for a print job is determined.
- the selected printer may be determined based on a selection made by a user of a device generating the print job, a location identifier associated with the print job, metadata received with the print job, and/or other data conveying or inferring a printer selection.
- mapping the selected printer to the print server may include consulting a data store to determine that an identifier stored for the selected printer in a table of printer identifiers is associated with an identifier stored for the print server in a table of print server identifiers.
- a driver associated with the selected printer is mapped to the print server.
- the mapping of the selected printer to the print server may also include communicating with a centralized data store to determine that an identifier stored for the selected printer in a table of printer identifiers is associated with an identifier stored for the driver in a table of print drivers.
- the mapping of the selected printer to the print server may additionally or alternatively include determining that the selected printer is of a specified type and determining that the driver is associated with the specified type of the selected printer.
- FIG. 12 illustrates another example of a method 1200 of centralized print job routing in a distributed printing environment.
- the method 1200 of FIG. 12 may be performed, for example, by the print router 140 of FIG. 1 , 2 , 5 , 6 , 7 , 9 , or 10 and/or by the central server computer system 105 of FIG. 1 , 2 , 5 , 7 , or 10 .
- a printer selected for a print job is determined based on a network identifier associated with the print job.
- the network identifier may include, for example, a source port, a destination port, a source address, and/or a destination address.
- the selected printer is mapped to a print server in communication with the selected printer.
- a driver associated with the selected printer is mapped to the print server.
- communication with the print server occurs to notify the print server of the driver mapped to the print server.
- the print server may install the driver in response to receiving the notification.
- FIG. 13 illustrates another example of a method 1300 of centralized print job routing in a distributed printing environment.
- the method 1300 of FIG. 13 may be performed, for example, by the print router 140 of FIG. 1 , 2 , 5 , 6 , 7 , 9 , or 10 and/or by the central server computer system 105 of FIG. 1 , 2 , 5 , 7 , or 10 .
- multiple drivers are stored at a centralized data store.
- a print job is received over a network.
- a printer selected for the print job is determined.
- the selected printer is mapped to a print server in communication with the selected printer.
- a driver from the centralized data store is mapped to the print server.
- the print job is transmitted over the network to the print server.
- the functionality of the central server computer system 105 of 1 , 2 , 5 , 7 , or 10 , the print router 140 of FIG. 1 , 2 , 5 , 6 , 7 , 9 , or 10 , the backend 120 of FIG. 1 or 4 , the print server 145 of FIG. 1 , 5 , 6 , or 7 , or the device 605 of FIG. 6 or 7 may, individually or collectively, be implemented with one or more Application Specific Integrated Circuits (ASICs) adapted to perform some or all of the applicable functions in hardware. Alternatively, the functions may be performed by one or more other processing units (or cores), on one or more integrated circuits.
- ASICs Application Specific Integrated Circuits
- each unit may also be implemented, in whole or in part, with instructions embodied in a memory, formatted to be executed by one or more general or application-specific processors.
- a device structure 1400 that may be used for one or more components of the central server computer system 105 of 1 , 2 , 5 , 7 , or 10 , the print router 140 of FIG. 1 , 2 , 5 , 6 , 7 , 9 , or 10 , the backend 120 of FIG. 1 or 4 , the print server 145 of FIG. 1 , 5 , 6 , or 7 , or the device 605 of FIG. 6 or 7 , or for other computing devices or printers described herein, is illustrated with the schematic diagram of FIG. 14 .
- This drawing broadly illustrates how individual system elements of each of the aforementioned devices may be implemented, whether in a separated or more integrated manner. Thus, any or all of the various components of one of the aforementioned devices may be combined in a single unit or separately maintained and can further be distributed in multiple groupings or physical units or across multiple locations.
- the example structure shown is made up of hardware elements that are electrically coupled via bus 1405 , including processor(s) 1410 (which may further comprise a digital signal processor (DSP) or special-purpose processor), storage device(s) 1415 , input device(s) 1420 , and output device(s) 1425 .
- DSP digital signal processor
- the storage device(s) 1415 may be a machine-readable storage media reader connected to any machine-readable storage medium, the combination comprehensively representing remote, local, fixed, or removable storage devices or storage media for temporarily or more permanently containing computer-readable information.
- the communications system(s) interface 1445 may interface to a wired, wireless, or other type of interfacing connection that permits data to be exchanged with other devices.
- the communications system(s) interface 1445 may permit data to be exchanged with a network.
- the structure 1400 may also include additional software elements, shown as being currently located within working memory 1430 , including an operating system 1435 and other code 1440 , such as programs or applications designed to implement methods of the invention. It will be apparent to those skilled in the art that substantial variations may be used in accordance with specific requirements. For example, customized hardware might also be used, or particular elements might be implemented in hardware, software (including portable software, such as applets), or both.
- the embodiments may be described as a process which is depicted as a flow diagram or block diagram. Although each may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. A process may have additional steps not included in the figure.
- the term “memory” or “memory unit” may represent one or more devices for storing data, including read-only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices or other computer-readable mediums for storing information.
- ROM read-only memory
- RAM random access memory
- magnetic RAM magnetic RAM
- core memory magnetic disk storage mediums
- optical storage mediums flash memory devices or other computer-readable mediums for storing information.
- computer-readable medium includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, a sim card, other smart cards, and various other mediums capable of storing, containing or carrying instructions or data.
- embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof.
- the program code or code segments to perform the necessary tasks may be stored in a computer-readable medium such as a storage medium. Processors may perform the necessary tasks.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
Methods, systems, and devices are described for centralized print job routing in a distributed printing environment. A data store may include a first table of identifiers for printers, a second table of identifiers for print servers, a third table of identifiers for drivers, and an association between identifiers of the first, second, and third tables. A print router may be configured to determine a printer selected for a print job. Based on the association between the identifiers of the first, second, and third tables, the print router may map a print server to the selected printer and a driver to the print server.
Description
- The present application claims priority from U.S. Provisional Patent Application Ser. No. 61/394,264, which is incorporated herein by reference in its entirety for all it discloses.
- Embodiments of the invention relate to computer network communication, and more particularly, printing in a dynamic roaming environment. Organizations often use a variety of computing devices. Various computer systems may use a thin-client or a virtual desktop display in conjunction with a centralized server or mainframe, and also use traditional workstations and handheld devices.
- A thin-client may be a computing device that includes hardware, software, or both in a client-server architecture network. However, such a network may use a central server for processing and may transmit and receive input and output over a network or other communication medium established between the device and the remote server. In some examples, a thin-client device may run web browsers or remote desktop software, such that significant processing may occur on the server.
- Printing in such environments may present a number of significant challenges. Traditionally, print drivers are stored and maintained on each device, and this can cause administrative overhead and maintenance issues. The problem may be exacerbated with mobile thin-clients and other mobile devices, as the number of drivers that may need to be stored can increase substantially as more printers become available.
- There are also challenges related to selecting the right printer and print server in a dynamic environment. For example, with a mobile device or a roaming user, it may be a challenge to identify the appropriate printers because of the legacy architecture for printing networks. Also, because of the traditional ways printer networks communicate, feedback for print jobs and identifying available printers can present challenges, as well. Thus, there may be a need in the art for novel system architectures to address one or more of these issues.
- Methods, systems, and devices are described for centralized print job routing in a distributed printing environment.
- In one set of embodiments, a distributed printing system includes multiple print servers, a data store, and a print router. The data store may include a first table of identifiers for printers, a second table of identifiers for print servers, and a third table of identifiers for multiple drivers. The data store may further store an association between identifiers of the first, second, and third tables. The print router may determine a printer selected for a print job, map a first identifier for a print server to the identified printer, and map a second identifier for a driver to the print server.
- In another set of embodiments, a method of printing in a distributed environment includes determining a printer selected for a print job, mapping the selected printer to a print server in communication with the selected printer, and mapping a driver associated with the selected printer to the print server.
- In another set of embodiments, a method of printing in a distributed environment includes storing multiple driver in a centralized data store, receiving a print job over a network, and identifying a printer selected for the print job. The selected printer is mapped to a print server in communication with the printer, and a driver in the centralized data store is mapped to the print server. The print job is then transmitted to the print server over the network.
- A further understanding of the nature and advantages of the present invention may be realized by reference to the following drawings. In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
-
FIG. 1 is a block diagram illustrating a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention. -
FIG. 2 is a block diagram illustrating a central server computer system in a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention. -
FIG. 3 is a block diagram illustrating a data store in a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention. -
FIG. 4 is a block diagram illustrating a backend in a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention. -
FIG. 5 is a block diagram illustrating a logical path taken by print data in a system for distributed printing in a dynamic roaming and traditional static environments, according to various embodiments of the invention. -
FIG. 6 is a block diagram illustrating a system for centralized print job routing in a distributed printing environment, according to various embodiments of the invention. -
FIG. 7 is a block diagram illustrating a system for centralized print job routing in a distributed printing environment, according to various embodiments of the invention. -
FIGS. 8A , 8B, 8C, 8D, and 8E are diagrams illustrating tables which may be stored in a centralized data store of a distributed printing environment, according to various embodiments of the invention. -
FIG. 9 is a block diagram of a print router in a distributed printing environment, according to various embodiments of the invention. -
FIG. 10 is a block diagram of a central server computer system in a distributed printing environment, according to various embodiments of the invention. -
FIG. 11 is a flowchart diagram of an illustrative method of centralized print job routing in distributed printing environment, according to various embodiments of the invention. -
FIG. 12 is a flowchart diagram of an illustrative method of centralized print job routing in distributed printing environment, according to various embodiments of the invention. -
FIG. 13 is a flowchart diagram of an illustrative method of centralized print job routing in distributed printing environment, according to various embodiments of the invention. -
FIG. 14 is a schematic diagram that illustrates a representative device structure that may be used in various embodiments of the present invention. - The present description sets forth examples of systems, methods, and devices for centralized print job routing in a distributed printing environment. In these systems, methods, and devices, identifiers for a number of printers, print servers, and drivers may be stored in first, second, and third tables of a data store, respectively. When a printer is selected for a print job, a print router maps the printer to a print server according to an association between an identifier for the selected printer and an identifier for the print server. The print router also maps the print server to a driver based on an association between the identifier for the print server and an identifier for the driver.
- This description provides examples, and is not intended to limit the scope, applicability or configuration of the invention. Rather, the ensuing description will provide those skilled in the art with an enabling description for implementing embodiments of the invention. Various changes may be made in the function and arrangement of elements.
- Thus, various embodiments may omit, substitute, or add various procedures or components as appropriate. For instance, it should be appreciated that the methods may be performed in an order different than that described, and that various steps may be added, omitted or combined. Also, aspects and elements described with respect to certain embodiments may be combined in various other embodiments. It should also be appreciated that the following systems, methods, devices, and software may individually or collectively be components of a larger system, wherein other procedures may take precedence over or otherwise modify their application.
- Systems, devices, methods, and software are described for centralized print job routing within a distributed printing environment. In one set of embodiments, shown in
FIG. 1 ,system 100 includes a centralserver computer system 105, adata store 110,print servers 145, andprinters 150. Each of these components may be in communication with each other, directly or indirectly. - The central
server computer system 105 may include arules engine 130, asession manager 135, and aprint router 140. The centralserver computer system 105 may be made up of one or more server computers, workstations, web servers, or other suitable computing devices. The centralserver computer system 105 may be fully located within a single facility or distributed geographically, in which case a network may be used to integrate different components. - The central
server computer system 105 may receive a print job. The print job may be received from awindows session 125. Alternatively, the print job may be received from anapplication session 115 via abackend 120. The print job may also or alternatively be received from anapplication session 115 via a cloud computing environment (not specifically shown). The print job may be received from thin-clients (e.g., SUN RAY clients available from Oracle Corporation, WYSE clients available from Wyse Technology, etc.), thick clients (e.g., desktops, laptops), mobile devices, tablets, etc., although these devices are not specifically shown in the diagram Moreover, the print job may be received from any type of desktop or virtual desktop environment. Examples of suitable desktop environments from which the print job may be received include, but are not limited to, LINUX environments based on the open-source Linux kernel; WINDOWS environments based on software available from Microsoft, Inc.; OS/X environments based on software available from Apple, Inc.; VMWARE virtual environments based on software available from VMware, Inc.; CITRIX virtual environments based on software available from Citrix Systems, Inc.; Windows Terminal Services/Remote Desktop virtual environments based on software available from Microsoft, Inc.; ANDROID environments based on software available from Google, Inc.; IOS environments based on software available from Apple, Inc.; WEBOS environments based on software available from Hewlett Packard Company; combinations thereof; and the like. In some embodiments, the centralserver computer system 105 may receive notice or identification for a print job, and perform the functionality described herein based on such notice or identification only. - A set of drivers may be stored at
data store 110.Data store 110 may be a single database, or may be made up of any number of separate and distinct databases. Thedata store 110 may include one, or more, relational databases or components of relational databases (e.g., tables), object databases, or components of object databases, spreadsheets, text files, internal software lists, or any other type of data structure suitable for storing data. Thus, it should be appreciated that adata store 110 may each be multiple data storages (of the same or different type), or may share a common data storage with other data stores. Although in some embodiments thedata store 110 may be distinct from a centralserver computer system 105, in other embodiments it may be integrated therein to varying degrees. - As noted above, notification of a requested print job may be received at the central
server computer system 105. Asession manager 135 may receive the notification, and may assign a terminal identifier (TID) to a device requesting the job. The centralserver computer system 105 may identify information about the print job (e.g., identification and location of theapplicable print server 145 andprinter 150, and identification of the proper driver). Drivers for the print job may be transmitted to theappropriate print server 145 and to the client device requesting the job. The drivers may be installed, and the device andprint server 145 may execute the print job with the installed drivers. Thus, the centralserver computer system 105 may access thedata store 110 to distribute drivers to theprint server 145 or the device, and thus in some embodiments the drivers do not need to be maintained on each device orprint server 145. The drivers may be taken down or uninstalled after each job, set of jobs, or period with no use. - In some embodiments, the central
server computer system 105 may use the information about a print job to identify an appropriate operating system (OS) and print driver for the print server for a given print job. The centralserver computer system 105 may access thedata store 110 to retrieve the OS and print driver, and load an OS in real-time in response to receiving a print job. The centralserver computer system 105 may install the appropriate driver, thus creating a virtual print server (which may, but need not be, print server 145). The virtual print server executes the print job. After the print job is complete, the driver and OS may be taken down. In alternative embodiments, print servers may not be dynamically generated in response to individual print jobs or even at all. For example, the centralserver computer system 105 may distribute incoming print jobs among a fixed set of physical orvirtual print servers 145. - It should be understood that the
print servers 145 may be any real or virtual machine or environment that hosts a print driver for controlling aprinter 150. Thus, in certain examples aprint server 145 may be implemented by circuitry, logic, and/or software within theprinter 150. Additionally or alternatively, aprint server 145 may include a real or virtual network server and/or a personal computing device in communication with aprinter 150. - In some embodiments, a
printer 150 is selected (e.g., automatically or by a user). Theprint router 140 at the centralserver computer system 105 may receive the selection. At theprint router 140, the selected printer may be mapped to a 1) driver of a table of drivers, and 2) aprint server 145 of a table of print servers. In certain examples, this mapping may be performed based on static relationships between printers, drivers, and print servers. For example, these static relationships may be stored as tables within thedata store 110. - Additionally or alternatively, a
rules engine 130 at the centralserver computer system 105 may be used in the selection of the printer. Therules engine 130 may be configured to dynamically map a print job to aprint server 145 andprinter 150 for the print job. By way of example, upon notification or receipt of the print job, therules engine 130 may access a set of rules to determine thecorrect print server 145 andprinter 150 for the print job. The rules may dynamically make this determination based on the location of the device. The type of device, attributes of the print job, and other factors may be used by therules engine 130 to determine the correct type and location for theprint server 145 andprinter 150. This rulesengine 130 functionality may not be necessary in all embodiments of the invention to identify anappropriate printer 150,print server 145, or driver for a print job. Accordingly, therules engine 130 may be eliminated from certain embodiments. - In some embodiments, feedback from a
printer 150 is received at theprint server 145, and then forwarded on to aprint router 140. Theprint router 140 may route the feedback (e.g., job failed, out of ink, out of paper, etc.) to the client device. This report may be in the form of a dialogue box. The feedback may be routed to avoid thebackend 120, even when the print job is initially routed through thebackend 120. In response to feedback from aprint router 140, a client device may direct or route a print job. This routing may be to a new printer, or may call up alternative functionality (e.g., a new tray) for a printer that is already in use. Thus, instead of unidirectional printing, print jobs (e.g., sent through a backend 120) may be controlled by two-way communication between theprint router 140 and the device. - The components of the
system 100 may be directly connected, or may be connected via a network (not shown), which may be any combination of the following: the Internet, an IP network, an intranet, a wide-area network (“WAN”), a local-area network (“LAN”), a virtual private network, the Public Switched Telephone Network (“PSTN”), or any other type of network supporting data communication between devices described herein, in different embodiments. A network may include both wired and wireless connections, including optical links. Many other examples are possible and apparent to those skilled in the art in light of this disclosure. In the discussion herein, a network may or may not be noted specifically. If no specific means of connection is noted, it may be assumed that the link, communication, or other connection between devices may be via a network. -
Session manager 135 may include an API architecture which serves as the communication control point, managing virtual desktop sessions and brokering sessions for clients to backend 120 virtual desktop and application sessions. Thesession manager 135 may broker and pass through mechanisms for client devices to active virtual sessions. The centralserver computer system 105 may include a centralized management console (not shown), which may be a web-based management console for configuration, real time monitoring, and reporting. There may be management capabilities for the entire virtual desktop/application environment. -
FIG. 2 shows a block diagram of a central server computer system 105-a. The central server computer system 105-a may be one example of the centralserver computer system 105 inFIG. 1 . The central server computer system 105-a shown inFIG. 2 includes arules engine 130, asession manager 135, a print router 140-a, and aprint server manager 205. Therules engine 130 and thesession manager 135 shown inFIG. 2 may be substantially the same as therules engine 130 and thesession manager 135 shown inFIG. 1 . The print router 140-a may be one example of theprint router 140 shown inFIG. 1 . - The print router 140-a may match print jobs received from
115, 125 to one orexternal sessions more destination printers 150 and/orprint servers 145. To accomplish these tasks, the print router 140-a may include at least a printdata receiving module 210, a printsource identification module 215, a printparameters identification module 220, a printerdestination identification module 225, and a printerfeedback routing module 230. - The print
data receiving module 210 may be configured to receive print data corresponding to a print job from an 115, 125 via a communication channel established by theexternal session session manager 135. In certain embodiments, the print data received from the 115, 125 may be in the form of one or more page description languages (PDLs). Examples of page description languages that may be received at the receivingexternal session module 210 include, but are not limited to, PostScript, Portable Document Format (PDF), Printer Command Language (PCL), Scalable Vector Graphics (SVG), Open XML Paper Specification (XPS), and any other page description language that may suit a particular implementation of the principles described herein. - In other embodiments, the print data received from the
115, 125 may be in the form of text or images for use with a standard template stored by aexternal session print server 145 or aprinter 150. For example, the print data may be used to print a personalized bracelet worn by a patient in a medical facility. In this example, the print data may include text corresponding to the name of the patient, and the name of the patient's doctor. This text, when received by aprint server 145 or aprinter 150, may be applied to a standard bracelet template to print a bracelet having the name of the patient and the name of the patient's doctor. - In additional or alternative embodiments, the print data received by the print
data receiving module 210 may be in the form of an image that has already been rasterized by the 115, 125 in preparation for delivery to aexternal session printer 150. - The print
data receiving module 210 may be configured to cache the received print data at a designated storage area. In certain examples, the designated storage area may be in adata store 110. The cached print data may be accessible to therules engine 130 or any other module or process. - The print
source identification module 215 may be configured to analyze the received print data to determine certain attributes or characteristics of the received print data. These attributes or characteristics may also be stored for use by the other modules or processes. For example, the printsource identification module 215 may associate the received print data with a format in thedata store 110. This format information may be available to therules engine 130 for use in enforcing one or more rule sets. - In certain examples, the print
source identification module 215 may analyze the print data received by the printdata receiving module 210 to determine a source of the print data. By way of example, the source may be determined using information from thesession manager 135, information acquired by the printdata receiving module 210, and/or information attached to the print data itself by the source. Once the print source has been identified, the identity of the print source may be associated with the received print data. For example, the identity of the print source may be stored in thedata store 110. - The print
parameters identification module 220 may identify certain print parameters for the received print data. These print parameters may be included with the received print data and/or determined by logical deduction (e.g., using the rules engine 130). For instance, a user of an 115, 125 may specify a particular print parameter which may be transmitted to the central server computer system 105-a with the print data or logically deduced from the received print data. Additionally or alternatively, certain default print parameters may be determined for the print data based on the identity of the source of the print data and/or another attribute associated with the print data.external session - Examples of print parameters that may be identified by the print
parameters identification module 220 include, but are not limited to, a selected type of printing media, a selected size of printing media, a selected source of printing media, an ink or toner color setting, a collation setting, a staple setting, a duplex setting, a scaling setting, combinations thereof, and the like. - The printer
destination identification module 225 may be configured to identify anappropriate destination printer 150 and/orprint server 145 for print data received at the printdata receiving module 210. The printerdestination identification module 225 may identify theappropriate destination printer 150 based on one or more attributes of the print data. - In certain examples, the printer
destination identification module 225 may pass certain attributes of the print data (e.g., the identity and/or location of the source of the print data determined by the printsource identification module 215, the print parameters determined by the printparameters identification module 220, etc.) to therules engine 130. Therules engine 130 may apply a certain set of predetermined or dynamically updated rules to the input it receives from the printerdestination identification module 225 to determine thedestination printer 150 and/orprint server 145 for the print data. Thedestination printer 150 and/orprint server 145 determined by therules engine 130 may then be returned to the printerdestination identification module 225. - Alternatively, instead of using a
rules engine 130, the printerdestination identification module 225 may identify theappropriate destination printer 150 based on static associations between certain attributes andcertain destination printers 150. - Once the
destination printer 150 and/orprint server 145 has been identified for the print data, the printdata forwarding module 230 may be configured to forward the print data on to the identifiedprinter 150 and/orprint server 145. The print data may be forwarded over a local connection and/or over a network or logical connection. Additionally, in certain examples, the printdata forwarding module 230 may be configured to receive feedback from aprinter 150 and/or aprint server 145 about a specific print job and process the feedback and/or forward the feedback to a third party, such as the source of that particular print job. - The
print server manager 205 of the central server computer system 105-a may handle certain aspects related to the distribution of drivers for printers to theprint servers 145 and the general maintenance of theprint servers 145. Accordingly, theprint server manager 205 may include adriver identification module 235, adriver deployment module 240, an operatingsystem identification module 245, and a printserver instantiation module 250. - The
driver identification module 235 may, in response to a set of print data being assigned to aparticular printer 150, determine an appropriate driver for thatprinter 150. As described above with regard toFIG. 1 , the appropriate driver may be selected from a central repository of drivers stored, for example, atdata store 110. Thedriver identification module 235 may be further configured to determine whether an appropriate driver for the selectedprinter 150 is already installed on aprint server 145 chosen to send the print data to the selectedprinter 150. In certain examples, thedriver identification module 235 may compare a version of the driver stored by the chosenprint server 145 with a version of the driver stored at the central repository to determine whether the driver stored by the chosenprint server 145 is current. - In the event that a determination is made that the chosen
print server 145 does not have the appropriate driver or a correct version of the appropriate driver, thedriver deployment module 240 may install the appropriate driver on theprint server 145. In certain examples, thedriver deployment module 240 may access and write to storage associated with theprint server 145 via a local connection, network connection, and/or a logical connection to install the appropriate driver to theprint server 145. - The operating
system identification module 245 may be configured to identify an appropriate operating system associated with an appropriate driver for the selectedprinter 150. In the event that aprint server 145 running the appropriate operating system and in communication with the selectedprinter 150 does not exist or is unavailable, the printserver instantiation module 250 may instantiate anew print server 145. The newly instantiatedprint server 145 may be created on a dedicated or virtual machine by loading the appropriate operating system to the dedicated or virtual machine. In certain examples, an operating system image having the appropriate driver preinstalled may be used to instantiate thenew print server 145. -
FIG. 3 is a block diagram of one example of a data store 110-a that may be associated with a centralserver computer system 105. The data store 110-a shown inFIG. 3 may be an example ofdata store 110 shown inFIG. 1 . As shown inFIG. 3 , data store 110-a may storedrivers 305,libraries 310,device configurations 315, tables 320,rules 325, andoperating system images 330. - Data store 110-a may maintain a repository of
drivers 305 forvarious printers 150 supported by a distributedprinting system 100. In accordance with the description ofFIGS. 1-2 , as a print job is received at the centralserver computer system 105, the centralserver computer system 105 may associate the print job with aspecific printer 150, dynamically access thedata store 110 to retrieve adriver 305 appropriate for the specific printer, and provide the retrieveddriver 305 to aprint server 145 associated with the specific printer. - Because the
drivers 305 are stored centrally at data store 110-a, individual 115, 125 andmachines implementing sessions individual print servers 145 need not store a local print driver for each printer supported by thesystem 100. Moreover, as updated versions ofdrivers 305 become available, a network administrator may make the updated versions available to eachprint server 145 in the system by simply updating the repository ofdrivers 305 stored at the data store 110-a, thereby avoiding the need to roll out driver updates to eachprint server 145 separately. - The data store 110-a may also store
software libraries 310. For example, the data store 110-a may storelibraries 310 associated with thedrivers 305. In certain embodiments, thelibraries 310 may include Dynamic-Link Library (DLL) or Dynamic Shared Object (DSO) files that allow theprint servers 145 to dynamically communicate with the 115, 125 which generate the print jobs sent tosessions printers 150. Thus, where the centralserver computer system 105 provides adriver 305 to aprint server 145 for aspecific printer 150, the centralserver computer system 105 may include with thedriver 305 one or more DLL files for thatprinter 150. The DLL(s) files may allow theprint server 145 to provide feedback to asession 125 from which a print job originates in a way that is understandable to thesession 125. For instance, if a user of thesession 125 generates the print job using a print Graphical User Interface (GUI), the DLL transmitted to theprint server 145 may allow theprint server 145 to provide feedback to the user of thesession 125 through the print GUI. - By way of example and not limitation, consider the case where a print job generated by a
session 125 has been sent to aprint server 145 for printing by aspecific printer 150, and that theprinter 150 is out of paper. Theprinter 150 may send a feedback message to theprint server 145 indicating that theprinter 150 is out of paper, and theprint server 145 may provide this feedback message to a print dialog window in thesession 125 using a DLL received from the centralserver computer system 105. This process may allow for a more seamless printing experience for a user ofsession 125, despite the fact that thesession 125 may not locally store a print driver or DLL for communicating with theprinter 150. - In certain examples, the data store 110-a may also store
device configurations 315, such as settings configurations forprinters 150. Thus, when the centralserver computer system 105 transmits a print job to aprint server 145 associated with aspecific printer 150, the centralserver computer system 105 may also include in the transmission aconfiguration 315 retrieved from the data store 110-a for thatprinter 150. Theconfiguration 315 may specify, for example, settings such as printer margin settings, duplex settings, paper tray settings, ink color settings, collation settings, and the like. Theconfiguration 315 transmitted to theprint server 145 by the centralserver computer system 105 may be specific to theprinter 150, the 115, 125 generating the print job, and/or the character or content of the print job itself.session - Additionally, the data store 110-a may store and maintain various tables 320. The tables 320 may reflect certain relationships present in the
system 100. For example, the tables 320 may include one or more tables 320 associating 115, 125 with terminal identifiers or node identifiers, one or more tables 320 associatingspecific sessions 115, 125 with physical locations, one or more tables 320 associatingspecific sessions specific printers 150 orprint servers 145 with physical locations, one or more tables 320 associating 115, 125 withspecific sessions default printers 150, and/or one or more tables 320 tracking any other association in thesystem 100 that may suit a particular implementation of the principles described herein. - In certain examples, two or more of the tables 320 stored by the data store 110-a may be interrelated in such a way that allows for logical deductions in routing print jobs to print
servers 145 or other useful purposes. For instance, the data store 110-a may include: a) a first table 320 associating each terminal identifier at a port with a 115, 125 at a specific physical location; and b) a second table 320 associating each physical location for aparticular session 115, 125 with asession default printer 150. In this case, the information in the first table 320 and the second table 320 may be used by the centralserver computer system 105 to associate a print job received at a port with aspecific default printer 150. - The data store 110-a may also include one or
more rules 325 for use by the centralserver computer system 105 in routing received print jobs to printservers 145 andprinters 150. As noted above in the description ofFIGS. 1-2 , therules engine 130 of the centralserver computer system 105 may be configured to dynamically map a print job to aprint server 145 andprinter 150 for the print job by accessing the set ofrules 325 stored in the data store 110-a. Therules 325 may take into account factors such as the location of the device generating the print job, the type of device generating the print job, attributes of the print job, and other factors. Some of these factors may be stored in the tables 320. - Additionally, the data store 110-a may include one or more
operating system images 330. Theoperating system images 330 may be used, for example, in the dynamic creation ofprint servers 145. As described above,certain drivers 305 may not be compatible with the standard operating systems executed bytypical print servers 145 in thesystem 100. Accordingly, when a print job is indicated for aprinter 150 using one of thesedrivers 305, the centralserver computer system 105 may retrieve a compatibleoperating system image 330 from the data store 110-a and instantiate anew print server 145 by loading theoperating system image 330 onto a real or virtual machine. The newly instantiatedprint server 145 may then receive the print job from the centralserver computer system 105 and control the indicatedprinter 150 using theappropriate driver 305 to complete the print job. - Turning now to
FIG. 4 , a block diagram is shown of an illustrative backend 120-a for use in a distributedprinting system 100. The backend 120-a shown inFIG. 3 may be an example of thebackend 120 shown inFIG. 1 . The backend 120-a may be configured to forwardprint data 405 to a next destination in the printing pipeline, such as a centralserver computer system 105, aprint server 145, or aprinter 150, as described in more detail below. To accomplish this functionality, thebackend 120 may include areceiving module 410 to receive theprint data 405 from anapplication session 115, abackend routing module 415 for determining the next destination of theprint data 405, and atransmission module 425 to transmit theprint data 405 to the determined next destination. In some examples, the backend 120-a may also include arasterization module 420 for rasterizing theprint data 405 prior to transmitting theprint data 405 to the centralserver computer system 105. - The receiving
module 410 of the backend 120-a may be configured to receive theprint data 405 over a channel of communication with theapplication session 115. In some examples, the channel of communication may include one or more local connections (e.g., serial ports, parallel ports, etc.) between the backend 120-a and a device implementing theapplication session 115. Additionally or alternatively, the channel of communication may include one or more network connections (e.g., Ethernet, WiFi, etc.) and/or logical connections (e.g., where the receivingmodule 410 of the backend 120-a and theapplication session 115 are implemented by the same physical machine). - In addition to receiving the
print data 405, the receivingmodule 410 may also identify theapplication session 115 providing theprint data 405. For example, the receivingmodule 410 may monitor a number of ports associated withvarious application sessions 115. Each of theapplication sessions 115 may be assigned a terminal identifier or a node identifier. Thus, whenprint data 405 is received, the receivingmodule 410 may take note of the terminal identifier, the node identifier, and/or the port on which the print data is received to associate theprint data 405 with a known application session. - The
backend routing module 415 may determine the next destination of theprint data 405 based on theapplication session 115 from which theprint data 405 was received. To this end, thedestination identification module 415 may maintain a table associatingspecific application sessions 115 with specific destinations. In certain examples, such as in thesystem 100 ofFIG. 1 , allprint data 405 received at the backend 120-a, regardless of source, may be transmitted by the backend 120-a to a single centralserver computer system 105. - In alternative examples, the backend 120-a may be communicatively coupled to a number of separate central
server computer systems 105 such thatprint data 405 fromdifferent application sessions 115 is transmitted by the backend to different centralserver computer systems 105. In additional or alternative examples, the backend 120-a may be communicatively coupled to one or more centralserver computer systems 105 in addition to one ormore print servers 145 such thatprint data 405 from someapplication sessions 115 is transmitted to a centralserver computer system 105 andprint data 405 fromother application sessions 115 is transmitted directly to aprint server 145. In these examples, thebackend routing module 415 may determine the next destination of each instance ofprint data 405 based on theapplication session 115 from which theprint data 405 was received. - In certain examples, the
backend routing module 415 may further include logic for dynamically determining in real-time how a print job is to be routed. For example, based on certain characteristics of theprint data 405, thebackend routing module 415 may determine that it would be more appropriate to forward theprint data 405 to a centralserver computer system 105 than to aprint server 145 orprinter 150. Additionally or alternatively, in examples where the backend 120-a is communicatively coupled to multiple alternative centralserver computer systems 105, thebackend routing module 415 may perform load balancing in its distribution of different print jobs between the separate centralserver computer systems 105. - As mentioned above, in certain embodiments the backend 120-a may include a
rasterization module 420. Therasterization module 420 may convert the receivedprint data 405 into a raster image that can be understood by a printer. In other embodiments, theprint data 405 may already have been rasterized by theapplication session 115 from which theprint data 405 was received. In still other embodiments, theprint data 405 may be rasterized at aprint server 145 prior to printing. - The
transmission module 425 of the backend 120-a may transmit the receivedprint data 405 to the destination determined by the nextdestination identification module 415. This transmission may occur over one or more local connections (e.g., serial ports, parallel ports), one or more network connections (e.g., Ethernet, WiFi), and/or one or more logical connections (e.g., where thebackend 120 and the next destination are implemented by the same physical machine). -
FIG. 5 illustrates a diagram of oneillustrative path 500 ofprint data 405 through a distributed printing system. Theprint data 405 may first be generated and transmitted to a central server computer system 105-b by asession 125. The central server computer system 105-b may be an example of the centralserver computer system 105 ofFIG. 1 orFIG. 2 . Thesession 125 may include an application executed by a host device. In certain examples, a user of the application issues a command to print data generated or hosted by the application. - In certain embodiments, the
session 125 may transmit theprint data 405 directly to the central sever computer system 105-b. Alternatively, thesession 125 may utilize abackend 120 to transmit theprint data 405 to the centralserver computer system 105. The central server computer system 105-b may performsession identification 510 to determine the source of theprint data 405. For example, the central server computer system 105-b may look up a terminal identifier and/or a port associated with theprint data 405 in a table to identify a device from which theprint data 405 originated. - Once the source of the
print data 405 is known, the central server computer system 105-b may performprint routing 515 on theprint data 405 to select an appropriate printer 150-a for theprint data 405. The printer 150-a may be an example of one of theprinters 150 shown inFIG. 1 . Theprint routing 515 may include applying a set of rules to one or more parameters associated with theprint data 405 and/or the identifiedsession 125. Additionally, the central server computer system 105-b may retrieve 520 an appropriate driver 305-a for the identified printer 150-a from adata store 110. The driver 305-a may be transmitted, together with theprint data 405, from the central server computer system 105-b to a print server 145-a associated with the identified printer 150-a. The print server 145-a may be an example of theprint server 145 shown inFIG. 1 . In certain examples, as described above, the print server 145-a may be dynamically instantiated in response to a particular printer 150-a being selected for theprint data 405. - The print server 145-a may install 530 the driver 305-a received from the central server computer system 105-b to enable the print server 145-a to communicate with the selected printer 150-a. Additionally, the print server may perform spooling 535 operations to receive and collect the
print data 405, scheduling 540 operations to schedule theprint data 405 for printing by the printer 150-a, and one ormore conversion 545 operations to transform the print data into a format understood by the printer 150-a. In certain examples, theconversion 545 operations may include rasterization of theprint data 405. The print server 145-a may then transmit theprint data 405 to the selected printer 150-a over a local connection, a network connection, and/or a logical connection for printing. - It is worth noting that while an entire distributed
printing system 100 has been described as a whole for the sake of context, the present specification is directed to methods, systems, and apparatus that may be used with, but are not tied to thesystem 100 ofFIGS. 1-5 . Individual aspects of the present specification may be broken out and used exclusive of other aspects of the foregoing description. This will be described in more detail, below. - In one set of embodiments, systems, devices, methods, and software are described for print routing.
FIG. 6 illustrates an example of asystem 600 for print routing according to various embodiments of the invention. Thesystem 600 includes adevice 605, a print router 140-b,print servers 145, andprinters 150. Each of these components may be in communication with each other, directly or indirectly. Thissystem 600 may be an example of thesystem 100 described above with reference toFIG. 1 and/or the system 300 described above with reference toFIG. 3 , and the print router 140-b may be a part of the centralserver computer system 105 ofFIG. 1 or 3. - A user of
device 605 may select aprinter 150 from a table or drop down menu (or the printer may be selected automatically). Thedevice 605 may transmit print data 405-a for a print job. The print data 405-a may include the image data for the print job and metadata. For example, the metadata associated with the print job may include, but is not limited to, at least one of a type associated with thedevice 605, a network identifier (e.g., a port, network address, or name) associated with thedevice 605, the printer selection, a network identifier associated with a selectedprinter 150, a location associated with thedevice 605, a location associated with a selectedprinter 150, or any other data that may suit a particular implementation of the principles described herein. - In other embodiments, the print data 405-a may come from sources other than the
device 605. For example, a user of thedevice 605 may control the printing of data stored elsewhere, thereby controlling the generation of print data 405-a. The print data 405-a may otherwise be linked to a selected printer of a number ofprinters 150 in thesystem 600. In one example, the print data 405-a may be directed to a particular port number, and the port number may be associated with a selectedprinter 150. In examples, the print data 405-a may be transmitted from or to a particular port number associated with a selectedprinter 150. In other embodiments, the print data 405-a may be associated with other types of addressing or identifiers to indicate a selected or default printer 150 (e.g., a network address for the printer, or a location identifier to be used by a rules engine for printer selection). - The print data 405-a may be transmitted through a backend (e.g., the
backend 120 ofFIG. 1 ) or through a cloud computing environment to the print router 140-b. Alternatively, the print data 405-a may be transmitted directly (or through a network) to the print router 140-b (e.g., in a windows environment). In one embodiment, the print router 140-b may receive the print data 405-a including a port number or other network identifier, and may identify theprinter 150 to be used based on the port number or other network identifier. In other embodiments, the print router 140-b may process other received information included or associated with the print data 405-a to identify theprinter 150. Thus, the print router 140-b may receive information identifying aprinter 150, or may process a portion of the print data 405-a to identify theprinter 150. - With the information identifying the selected
printer 150, the print router 140-b may identify aparticular print server 145 and driver(s) associated with the selected printer 150 (e.g., if printer 150-b is selected, the print router 140-b may identify print server 145-b, and drivers to be used for the print server 145-b and device 605). The drivers may be retrieved and distributed to the print server 145 (e.g., by the print router 140-b or another server, such as the centralserver computer system 105 ofFIG. 1 or 3), and the drivers may be installed. - The print router 140-b may transmit or otherwise provide the print data 405-a to an identified
print server 145. Aprint server 145 may process and format the print data, and transmit the processed data to aprinter 150 for printing. - In certain examples, the
print server 145 may be a virtual print server, and thus both the print router 140-b andprint server 145 may be part of the centralserver computer system 105 ofFIG. 1 , 2, or 5. -
FIG. 7 illustrates another example of a system 700 for print routing according to various embodiments of the invention. The system 700 includes a device 605-a, a print router 140-c, a data store 110-b, and print servers 145-e and 145-f. Each of these components may be in communication with each other, directly or indirectly. Data store 110-b includes printer table 705, print server table 710, and driver table 715. The data store 110-b may be an example of thedata store 100, 110-a described with reference toFIG. 1 or 3. As such, the data store 110-b may be a component of the print router 140-c and/or a centralserver computer system 105. This system 700 may be thesystem 100 described with reference toFIG. 1 , and the print router 140-b may be a part of the centralserver computer system 105 ofFIG. 1 or 5. This system 700 may also be an example of thesystem 600 described with reference toFIG. 6 . - Device 605-a may transmit print data 405-b for a print job to print router 140-c. The print data 405-b in this example includes metadata. The metadata may include, but is not limited to, at least one of: a device 605-a type or identification, printer identifiers or links, network addresses, device and printer location, other types of network identifiers, or other data. The print data 405-b may include identification of (or include links to) a selected printer. In one example, the print data 405-b may be directed to or transmitted from a particular port number, and the port number may be associated with a selected printer. In other embodiments, the print data 405-b may be associated with other types of addressing or network identifiers to indicate a selected or default printer.
- In this example, the data store 110-b includes a printer table 705, print server table 710, a driver table 715, and a
mapping association 720 that includes mappings between individual entries in the printer table 705, the print server table 710, and the driver table 715. The printer table 705 may include identifiers for multiple printers (e.g.,printer 150 ofFIG. 1 , 5, or 6) in the system 700. Similarly, the print server table 710 may include identifiers for multiple print servers (e.g.,print servers 145 ofFIG. 1 , 5, or 6), and the driver table 715 may include identifiers for multiple drivers (e.g.,drivers 305 ofFIG. 3 or 5) used by the system. - The
mapping association 720 may store associations between identifiers of the printer table 705, the print server table 710, and the driver table 715. In certain examples, for each printer in printer table 705, there may be an association with one (or more)print servers 145 listed in print server table 710. For eachprinter 150, there may be a hierarchy or varied favorability fordifferent print servers 145. Also, for eachprinter 150 in printer table 705, there may be an association with one (or more) print drivers (e.g.,drivers 305 ofFIG. 3 ) from driver table 715. The driver table 715 may havedrivers 305 for the device 605-a and forprint servers 145. For each printer, there may be a hierarchy or varied favorability for different print drivers. Thus, the print router 140-c may receive an identification of aprinter 150, and associate aprint server 145 and drivers with the identifiedprinter 145 based on links between tables 605, 610, and 615. The print router 140-b or other components of system 700 may distribute the drivers and forward the print data 405-b accordingly. -
FIGS. 8A , 8B, 8C, 8D, and 8E show examples of tables that may be stored by a data store 110-b to track the association between identifiers in a printer table 705, a print server table 710, and a driver table 715. The tables ofFIGS. 8A and 8B may be stored, for example in the data store 110-b ofFIG. 7 . - In the table shown in
FIG. 8A , there are columns for printers, print servers, and drivers, respectively. For each printer identifier in the table, there is an associated print server identifier and a driver identifier. For example, as shown inFIG. 8A , printer C is associated withprint server 2 and with driver C1. Thus, where printer C is identified for a print job, the print job may be mapped toprint server 2 based on the association in the table between the identifier “C” in the printer column with the identifier “2” in the print server column. Similarly, the driver C1 may be mapped toprint server 2 based on the association in the table between the identifier “C1” in the driver column and the identifier “2” in the print server column. In this way, the print job may be sent toprint server 2, which may cause printer C to print the job using driver C1. - As shown in the table of
FIG. 8B , additional identifiers, such as a location identifier and a print job type identifier, may also factor into the association of aprinter 150 with aprint server 145 and adriver 305. - As
printers 150 with redundant capabilities may be situated at different locations, separate print jobs of the same type may be sent todifferent printers 150 based on a location from which each print job originates or a desired printing location for each print job. Thus, in the present example, print jobs oftype 1 may be associated with printer A for location I, with printer D for location II, and with printer E for locations III and IV. - Additionally, different types of jobs within the same or different regions may be associated with
different printers 150. To illustrate this point, consider the example of a medical facility where printer A is a general purpose black and white printer, printer B is a color ink jet printer, and printer C is a special-purpose printer of patient identification bracelets. In location I, black and white print jobs (e.g., type 1) may be associated with printer A, color print jobs (e.g., type 2) may be associated with printer B, and patient bracelet print jobs (e.g., type 3) may be associated with printer C. - Furthermore, different types of print jobs may be sent to the
same printer 150 using different drivers. Thus, as shown inFIG. 8B , a print job oftype 1 sent to printer D byprint server 2 may use driver D1, whereas a print job oftype 2 sent to printer D by the same print server may use driver D2. By way of illustration, consider the example of a medical facility in which a multi-purpose printer may be configured to print both patient identification bracelets and identification cards. With this type of printer, it may be desirable to have two lightweight job-specific drivers in a system with centralized driver distribution rather than a single large driver. As such, an identification card-specific driver (e.g., driver D1) may be mapped to the print server (e.g., print server 2) for an identification card print job (e.g., a print job of type 1), and a bracelet-specific driver (e.g., driver D2) may be mapped to the print server (e.g., print server 2) for a bracelet print job (e.g., a print job of type 2). - In certain examples, static data from separate tables may be logically combined into inferred tables for print routing. To illustrate this point, consider the tables shown in 8C, 8D, and 8E.
- The table of
FIG. 8C tracks a known association between a terminal ID and port number for received data with a session and a location of a device implementing the session. Thus, if print data for a print job is received atport 9100 from terminal ID L184001, it can be determined in this example that the print data is from session M atlocation 2 based on the table. Similarly, if print data for a print job is received atport 9101 from a session, it can be determined in this example that the print data is from session N atlocation 3 based on the table. - The table of
FIG. 8D tracks a default printer for different sessions at different locations. Thus, in the present example, if print data is received from session M atlocation 2, the default printer for that print data is printer A according to the table. Similarly, if print data is received from session N atlocation 3, the default printer for that print data is printer B according to the table. - The table of
FIG. 8E combines the data from the tables ofFIG. 8C andFIG. 8D to create inferred associations between ports and printers. If each session of the present example transmits print data at a different port, it can be inferred from the tables ofFIG. 8C andFIG. 8D that print data received atport 9100 should be directed to printer A and that print data received atport 9101 should be directed to printer B, absent any indication to the contrary received in connection with the print data. -
FIG. 9 illustrates one example of a print router 140-d consistent with the foregoing principles. The print router 140-d may include a printerselection identification module 905, a printserver mapping module 910, and adriver mapping module 915. Each of these components may be in communication, directly or indirectly. The print router 140-d may be an example of theprint router 140 described with reference toFIG. 1 , 2, 6, or 7. - The printer
selection identification module 905 may include logic for identifying a printer (e.g.,printer 150 ofFIG. 1 , 5, or 6) selected for a particular print job. In certain examples, theprinter 150 may be selected in connection with the generation of print data for the print job. For instance, a user of a device (e.g.,device 605 ofFIG. 6 or 7) may be prompted to select aprinter 150 when generating a print job at the device. The user selection may be transmitted to the print router 140-d and identified at the printerselection identification module 905. - Additionally or alternatively, the printer
selection identification module 905 may identify the selection of aprinter 150 by receiving metadata associated with the print data, where the metadata specifies theprinter 150 selected for the print job. In this example, the printerselection identification module 905 may simply read the metadata to identify the printer selection. - In other examples, the printer
selection identification module 905 may identify the printer selection by inference. In certain embodiments, the printerselection identification module 905 may identify the printer selected for the print job by receiving a network identifier (e.g., a network address or a port number) associated with the print job and determining that the network identifier is associated with the printer. - In additional or alternative examples, the printer
selection identification module 905 may receive a location identifier associated with the print job. The location identifier may identify a location of the device generating the print job and/or a desired printing location. The printerselection identification module 905 may then identify the selected printer based on a stored association between the location identifier and the selected printer. - In certain examples, the printer
selection identification module 905 may identify theprinter 150 selected for the print job using a combination of direct and inferential identification techniques. For example, metadata associated with the print job may specify a certain type of printer. The type of the printer, in combination with the identification of the port at which the print job is received, may identify the printer selection. - The print
server mapping module 910 may include logic for mapping the selectedprinter 150, as identified by the printerselection identification module 910, to aspecific print server 145. In certain examples, the printserver mapping module 910 may map the selectedprinter 150 to theprint server 145 by accessing a data store (e.g.,data store 110 ofFIG. 1 , 3, or 7). Thedata store 110 may store amapping association 720 that associates the selectedprinter 150 with aprint server 145. For example, the printserver mapping module 910 may communicate with thedata store 110 to search one or more tables or other data structures in thedata store 110 for an identifier of the selectedprinter 150. The identifier of the selectedprinter 150 may be associated in thedata store 110 with an identifier for theprint server 145. In other examples, thedata store 110 may be more intelligent, and the printserver mapping module 910 may simply query thedata store 110 with an identifier for theprinter 150 to obtain an identifier for theprint server 145. - The
driver mapping module 915 may include logic for mapping a driver (e.g., fromdrivers 305 ofFIG. 3 ) to theprint server 145. Thedriver 305 may be a custom driver created specifically for the selectedprinter 150 or for a certain printer type. As such, mapping the driver to theprint server 145 may include determining that the selectedprinter 150 is of a certain type and determining that adriver 305 is associated with that type of printer. Additionally or alternatively, thedriver 305 may be ageneric driver 305 that is operable to control multiple types of printers. In still other examples, thedriver 305 may be adriver 305 specific to theprint server 145 or an operating system of theprint server 145. - In certain examples, the
driver mapping module 915 may communicate withdata store 110 to determine that thedriver 305 is associated with the selectedprinter 150. For example, thedriver mapping module 915 may search or query thedata store 110 to identify a driver matching theprinter 150. In some examples, thedriver mapping module 915 may determine that the selectedprinter 150 is of a certain type (e.g., vendor, model, feature set) and search or query thedata store 110 fordrivers 305 matching that type to identify anappropriate driver 305 to map to theprint server 145. Mapping adriver 305 to theprint server 145 may further include searching or querying thedata store 110 to determine that anappropriate driver 305 for theprint server 145 individually, for a type associated with theprint server 145, and/or for an operating system of theprint server 145. - Once the printer
selection identification module 905 has identified theprinter 150 selected for the print job, the printserver mapping module 910 has mapped theprinter 150 to aprint server 145, and thedriver mapping module 915 has mapped anappropriate driver 305 to theprint server 145, theprint server 145 may transmit the print job to the selectedprinter 150 using thedriver 305. -
FIG. 10 illustrates one example of central server computer system 105-c that may be used in a distributedprinting system 100, such as the 100, 600, 700 ofsystems FIG. 1 , 6, or 7. The central server computer system 105-c may be an example of the centralserver computer systems 105 ofFIG. 1 , 2, or 5. - The central server computer system 105-c may include a
rules engine 130, asession manager 135, a print router 140-e, and a print server manager 205-a. Each of these components may be in communication, directly or indirectly. Therules engine 130 and thesession manager 135 may function substantially as described above inFIG. 2 . - The print router 140-e may be an example of the print router 140-d described with reference to
FIG. 1 , 2, 6, 7, or 9. The print router 140-d may include a printerselection identification module 905, a printserver mapping module 910, and adriver mapping module 915 that perform substantially the same functionality as described above with reference toFIG. 9 . Additionally, the print router 140-e may include a printjob receiving module 1005, ametadata interpretation module 1010, a printjob transmission module 1015, and a driver notification module 1020. - The print
job receiving module 1005 may be configured to communicate with a device (e.g.,device 605 ofFIG. 6 ) generating print data for a print job to receive the print data. The print data may include the actual data to be printed in addition to metadata. The metadata may include data not for printing that is associated with the print job to convey certain attributes of the print job. For example, the metadata may include direct or indirect information indicating a printer selection for the print job. Themetadata interpretation module 1010 may receive and parse the metadata, passing information relevant to the printer selection to the printerselection identification module 905. - The print
job transmission module 1015 of the print router 140-e may forward some or all of the print data received at the printjob receiving module 1005 to the print server (e.g.,print server 145 ofFIG. 1 , 5, 6, or 7) mapped to the selected printer (e.g.,printer 150 ofFIG. 1 , 5, 6, or 7) by the printserver mapping module 910. Depending on the nature of communication between the central server computer system 105-c and theprint server 145, the print data may be forwarded to theprint server 145 over one or more local connections, network connections, logical connections, and/or combinations thereof. - The print server manager 205-a may be configured to coordinate the installation and use of
drivers 305 byspecific print servers 145. The print server manager 205-a may include adriver notification module 1025, a driverdeployment analysis module 1030, and adriver deployment module 1035. - The
driver notification module 1025 may include logic for notifying aprint server 145 of the identity of thedriver 305 mapped to theprint server 145 for the print job. For example, thedriver notification module 1025 may receive an identifier of thedriver 305 from thedriver mapping module 915 and forward the identifier to theprint server 145. Upon receiving the identifier of thedriver 305, theprint server 145 may know to use thatdriver 305 for the print job. - The driver deployment analysis module may include an
installation detection submodule 1040 and anupdate analysis submodule 1045. In certain examples,drivers 305 for print jobs may be centrally distributed to printservers 145 from the central server computer system 105-c on a per-print job basis, an as-needed basis, and/or another basis. - As such, when a
driver 305 has been mapped to theprint server 145 for use with aprinter 150 selected for a print job, theinstallation detection submodule 1040 may communicate with theprint server 145 to determine whether theprint server 145 already has thatdriver 305 installed. Where theprint server 145 has a version of thedriver 305 installed that is different from the version stored by the central server computer system 105-c, theupdate analysis submodule 1045 may determine whether an update to the driver installed on theprint server 145 is merited. If theprint server 145 does not have thedriver 305 installed or has an incorrect version of thedriver 305 installed, thedriver deployment module 1035 may communicate with theprint server 145 to write the correct version of thedriver 305 into the local storage of theprint server 145. - Alternatively, the
print server 145 may manage driver installation on its own. For example, theprint server 145 may receive notification from thedriver notification module 1025 that acertain driver 305 has been mapped to theprint server 145 for use with a selectedprinter 150 on a print job. In response to the notification, theprint server 145 may search its local storage to determine whether thatdriver 305 is already installed on theprint server 145. If theprint server 145 does not have the driver installed, or if an incorrect or out-of-date version of the driver is installed, theprint server 145 may request the driver from the central server computer system 105-c or another source. -
FIG. 11 illustrates one example of amethod 1100 of centralized print distribution in a distributed printing environment. Themethod 1100 ofFIG. 11 may be performed, for example, by theprint router 140 ofFIG. 1 , 2, 5, 6, 7, 9, or 10 and/or by the centralserver computer system 105 ofFIG. 1 , 2, 5, 7, or 10. Atblock 1105, a printer selected for a print job is determined. In certain examples, the selected printer may be determined based on a selection made by a user of a device generating the print job, a location identifier associated with the print job, metadata received with the print job, and/or other data conveying or inferring a printer selection. - At
block 1110, the selected printer is mapped to a print server in communication with the selected printer. In certain examples, mapping the selected printer to the print server may include consulting a data store to determine that an identifier stored for the selected printer in a table of printer identifiers is associated with an identifier stored for the print server in a table of print server identifiers. - At
block 1115, a driver associated with the selected printer is mapped to the print server. The mapping of the selected printer to the print server may also include communicating with a centralized data store to determine that an identifier stored for the selected printer in a table of printer identifiers is associated with an identifier stored for the driver in a table of print drivers. The mapping of the selected printer to the print server may additionally or alternatively include determining that the selected printer is of a specified type and determining that the driver is associated with the specified type of the selected printer. -
FIG. 12 illustrates another example of amethod 1200 of centralized print job routing in a distributed printing environment. Themethod 1200 ofFIG. 12 may be performed, for example, by theprint router 140 ofFIG. 1 , 2, 5, 6, 7, 9, or 10 and/or by the centralserver computer system 105 ofFIG. 1 , 2, 5, 7, or 10. - At block 1205 a printer selected for a print job is determined based on a network identifier associated with the print job. The network identifier may include, for example, a source port, a destination port, a source address, and/or a destination address. At
block 1210, the selected printer is mapped to a print server in communication with the selected printer. Atblock 1215, a driver associated with the selected printer is mapped to the print server. Atblock 1220, communication with the print server occurs to notify the print server of the driver mapped to the print server. In certain examples, the print server may install the driver in response to receiving the notification. -
FIG. 13 illustrates another example of amethod 1300 of centralized print job routing in a distributed printing environment. Themethod 1300 ofFIG. 13 may be performed, for example, by theprint router 140 ofFIG. 1 , 2, 5, 6, 7, 9, or 10 and/or by the centralserver computer system 105 ofFIG. 1 , 2, 5, 7, or 10. - At
block 1305, multiple drivers are stored at a centralized data store. Atblock 1310, a print job is received over a network. Atblock 1315, a printer selected for the print job is determined. Atblock 1320, the selected printer is mapped to a print server in communication with the selected printer. Atblock 1325, a driver from the centralized data store is mapped to the print server. Atblock 1330, the print job is transmitted over the network to the print server. - The functionality of the central
server computer system 105 of 1, 2, 5, 7, or 10, theprint router 140 ofFIG. 1 , 2, 5, 6, 7, 9, or 10, thebackend 120 ofFIG. 1 or 4, theprint server 145 ofFIG. 1 , 5, 6, or 7, or thedevice 605 ofFIG. 6 or 7, may, individually or collectively, be implemented with one or more Application Specific Integrated Circuits (ASICs) adapted to perform some or all of the applicable functions in hardware. Alternatively, the functions may be performed by one or more other processing units (or cores), on one or more integrated circuits. In other embodiments, other types of integrated circuits may be used (e.g., Structured/Platform ASICs, Field Programmable Gate Arrays (FPGAs), and other Semi-Custom ICs), which may be programmed in any manner known in the art. The functions of each unit may also be implemented, in whole or in part, with instructions embodied in a memory, formatted to be executed by one or more general or application-specific processors. - A
device structure 1400 that may be used for one or more components of the centralserver computer system 105 of 1, 2, 5, 7, or 10, theprint router 140 ofFIG. 1 , 2, 5, 6, 7, 9, or 10, thebackend 120 ofFIG. 1 or 4, theprint server 145 ofFIG. 1 , 5, 6, or 7, or thedevice 605 ofFIG. 6 or 7, or for other computing devices or printers described herein, is illustrated with the schematic diagram ofFIG. 14 . - This drawing broadly illustrates how individual system elements of each of the aforementioned devices may be implemented, whether in a separated or more integrated manner. Thus, any or all of the various components of one of the aforementioned devices may be combined in a single unit or separately maintained and can further be distributed in multiple groupings or physical units or across multiple locations. The example structure shown is made up of hardware elements that are electrically coupled via
bus 1405, including processor(s) 1410 (which may further comprise a digital signal processor (DSP) or special-purpose processor), storage device(s) 1415, input device(s) 1420, and output device(s) 1425. The storage device(s) 1415 may be a machine-readable storage media reader connected to any machine-readable storage medium, the combination comprehensively representing remote, local, fixed, or removable storage devices or storage media for temporarily or more permanently containing computer-readable information. The communications system(s)interface 1445 may interface to a wired, wireless, or other type of interfacing connection that permits data to be exchanged with other devices. The communications system(s)interface 1445 may permit data to be exchanged with a network. - The
structure 1400 may also include additional software elements, shown as being currently located within workingmemory 1430, including anoperating system 1435 andother code 1440, such as programs or applications designed to implement methods of the invention. It will be apparent to those skilled in the art that substantial variations may be used in accordance with specific requirements. For example, customized hardware might also be used, or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. - It should be noted that the methods, systems and devices discussed above are intended merely to be examples. It must be stressed that various embodiments may omit, substitute, or add various procedures or components as appropriate. For instance, it should be appreciated that, in alternative embodiments, the methods may be performed in an order different from that described, and that various steps may be added, omitted or combined. Also, features described with respect to certain embodiments may be combined in various other embodiments. Different aspects and elements of the embodiments may be combined in a similar manner. Also, it should be emphasized that technology evolves and, thus, many of the elements are exemplary in nature and should not be interpreted to limit the scope of the invention.
- Specific details are given in the description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the embodiments.
- Also, it is noted that the embodiments may be described as a process which is depicted as a flow diagram or block diagram. Although each may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. A process may have additional steps not included in the figure.
- Moreover, as disclosed herein, the term “memory” or “memory unit” may represent one or more devices for storing data, including read-only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices or other computer-readable mediums for storing information. The term “computer-readable medium” includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, a sim card, other smart cards, and various other mediums capable of storing, containing or carrying instructions or data.
- Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a computer-readable medium such as a storage medium. Processors may perform the necessary tasks.
- Having described several embodiments, it will be recognized by those of skill in the art that various modifications, alternative constructions, and equivalents may be used without departing from the spirit of the invention. For example, the above elements may merely be a component of a larger system, wherein other rules may take precedence over or otherwise modify the application of the invention. Also, a number of steps may be undertaken before, during, or after the above elements are considered. Accordingly, the above description should not be taken as limiting the scope of the invention.
Claims (20)
1. A distributed printing system, comprising:
a plurality of print servers;
a data store comprising:
a first table comprising identifiers for a plurality of printers;
a second table comprising identifiers for a plurality of print servers;
a third table comprising identifiers for a plurality of drivers; and
an association between identifiers of the first, second, and third tables; and
a print router configured to:
determine a printer selected for a print job;
map, according to the association between a first identifier from the first table for the selected printer and a second identifier from the second table for a selected print server of the plurality of print servers, the second identifier for the print server of the plurality of print servers to the selected printer; and
map, according to the association between the first identifier of the first table and a third identifier of the third table for a driver of the plurality of drivers, the third identifier for a driver of the plurality of drivers to the print server.
2. The distributed printing system of claim 1 , wherein the print router is further configured to:
communicate with the print server to notify the print server of the driver mapped to the print server.
3. The distributed printing system of claim 1 , wherein the print router is further configured to:
communicate with the print server to notify the print server of the driver mapped to the print server
4. The distributed printing system of claim 1 , wherein the print router is further configured to determine the printer selected for the print job by:
receiving a location identifier associated with the print job; and
determining that the location identifier is associated with the printer.
5. The distributed printing system of claim 1 , wherein the print router is further configured to:
determine the printer selected for the print job from metadata associated with the print job.
6. The distributed printing system of claim 1 , wherein,
the print router comprises the data store; and
the identified printer selected for a print job comprises an identifier for the identified printer.
7. A method of centralized print job routing in a distributed printing environment, comprising:
determining a printer selected for a print job;
mapping the selected printer to a print server in communication with the selected printer; and
mapping a driver associated with the selected printer to the print server.
8. The method of claim 7 , wherein:
the determining the printer comprises determining a printer identifier for the selected printer;
the mapping the selected printer to the print server comprises mapping the printer identifier to a print server identifier of a plurality of print server identifiers according to an association between the printer identifier and the print server identifier; and
the mapping the driver comprises mapping the printer identifier to a driver identifier of a plurality of driver identifiers according to an association between the printer identifier and the driver identifier.
9. The method of claim 7 , wherein determining the printer selected for the print job comprises:
receiving a location identifier associated with the print job; and
determining that the location identifier is associated with the printer.
10. The method of claim 7 , wherein determining the printer selected for the print job comprises:
receiving metadata associated with the print job; and
identifying the printer from the metadata.
11. The method of claim 7 , wherein determining the printer selected for the print job comprises:
receiving a printer selection from a user of a device generating the print job.
12. The method of claim 7 , further comprising:
storing an association between the selected printer and the print server at a centralized data store,
wherein mapping the selected printer to the print server comprises communicating with the data store to determine that the selected printer is associated with the print server.
13. The method of claim 7 , further comprising:
storing an association between the selected printer and the driver at a centralized data store,
wherein mapping the driver to the print server comprises communicating with the data store to determine that the selected printer is associated with the driver.
14. The method of claim 7 , wherein mapping the driver to the print server comprises:
determining that the selected printer is of a specified type; and
determining that the driver is associated with the specified type of the selected printer.
15. The method of claim 7 , further comprising:
communicating with the print server to notify the print server of the driver mapped to the print server.
16. The method of claim 7 , further comprising:
determining whether the driver mapped to the print server is currently installed on the print server.
17. The method of claim 7 , further comprising:
communicating with the print server to transmit the driver on the print server in response to determining that the driver mapped to the print server is not currently installed on the print server.
18. The method of claim 7 , further comprising:
receiving the print job; and
transmitting the print job to the print server.
19. A method of printing in a distributed printing environment, comprising:
storing a plurality of drivers in a centralized data store;
receiving a print job over a network;
identifying a printer selected for the print job;
mapping the selected printer to a print server in communication with the printer;
mapping a driver in the centralized data store to the print server; and
transmitting the print job to the print server over the network.
20. The method of claim 19 , wherein identifying the printer selected for the print job comprises:
receiving a network identifier associated with the print job; and
determining that the network identifier is associated with the printer.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/276,030 US20120092719A1 (en) | 2010-10-18 | 2011-10-18 | Centralized print job routing in a distributed printing environment |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US39426410P | 2010-10-18 | 2010-10-18 | |
| US13/276,030 US20120092719A1 (en) | 2010-10-18 | 2011-10-18 | Centralized print job routing in a distributed printing environment |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20120092719A1 true US20120092719A1 (en) | 2012-04-19 |
Family
ID=45933926
Family Applications (7)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/276,030 Abandoned US20120092719A1 (en) | 2010-10-18 | 2011-10-18 | Centralized print job routing in a distributed printing environment |
| US13/276,037 Abandoned US20120092720A1 (en) | 2010-10-18 | 2011-10-18 | Dynamic print job routing in a distributed printing environment |
| US13/276,073 Abandoned US20120092723A1 (en) | 2010-10-18 | 2011-10-18 | Bidirectional print router communications in a distributed printing environment |
| US13/276,060 Active 2032-12-27 US8854663B2 (en) | 2010-10-18 | 2011-10-18 | Dynamic print server generation in a distributed printing environment |
| US13/276,021 Abandoned US20120092693A1 (en) | 2010-10-18 | 2011-10-18 | Centralized print driver distribution in a distributed printing environment |
| US13/276,065 Abandoned US20120092722A1 (en) | 2010-10-18 | 2011-10-18 | Managing printer feedback in a distributed printing environment |
| US13/686,631 Abandoned US20130094060A1 (en) | 2010-10-18 | 2012-11-27 | Dynamic print job routing in a distributed printing environment |
Family Applications After (6)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/276,037 Abandoned US20120092720A1 (en) | 2010-10-18 | 2011-10-18 | Dynamic print job routing in a distributed printing environment |
| US13/276,073 Abandoned US20120092723A1 (en) | 2010-10-18 | 2011-10-18 | Bidirectional print router communications in a distributed printing environment |
| US13/276,060 Active 2032-12-27 US8854663B2 (en) | 2010-10-18 | 2011-10-18 | Dynamic print server generation in a distributed printing environment |
| US13/276,021 Abandoned US20120092693A1 (en) | 2010-10-18 | 2011-10-18 | Centralized print driver distribution in a distributed printing environment |
| US13/276,065 Abandoned US20120092722A1 (en) | 2010-10-18 | 2011-10-18 | Managing printer feedback in a distributed printing environment |
| US13/686,631 Abandoned US20130094060A1 (en) | 2010-10-18 | 2012-11-27 | Dynamic print job routing in a distributed printing environment |
Country Status (1)
| Country | Link |
|---|---|
| US (7) | US20120092719A1 (en) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130014112A1 (en) * | 2011-07-05 | 2013-01-10 | Ricoh Company, Ltd. | Information processing apparatus and data management system |
| US20150012913A1 (en) * | 2013-07-08 | 2015-01-08 | Fuji Xerox Co., Ltd. | Application management apparatus, application management system, application management method, and non-transitory computer readable medium |
| CN107533447A (en) * | 2015-04-21 | 2018-01-02 | Mw史道瑞有限公司 | Secure printing system and its processing method based on cloud |
| US20210336840A1 (en) * | 2012-11-14 | 2021-10-28 | Steve Belmonte | Hardware server and technical method to optimize bulk printing of physical items |
| US11573747B2 (en) | 2020-09-25 | 2023-02-07 | Fmr Llc | Systems and methods for a printer reverse redirector |
Families Citing this family (44)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120092718A1 (en) * | 2010-10-19 | 2012-04-19 | Toshiba Tec Kabushiki Kaisha | Print information display device, method and medium |
| JP5609544B2 (en) * | 2010-10-29 | 2014-10-22 | セイコーエプソン株式会社 | Image input system, content server, mediation server, and image input method |
| WO2013065056A1 (en) | 2011-10-31 | 2013-05-10 | Hewlett-Packard Development Company, L.P. | Rendering permissions for rendering content |
| JP5871575B2 (en) * | 2011-11-15 | 2016-03-01 | キヤノン株式会社 | Information processing apparatus, information processing method, and computer program |
| US20130185364A1 (en) * | 2012-01-18 | 2013-07-18 | Rajesh Bhatia | Email applications |
| JP6089558B2 (en) * | 2012-03-07 | 2017-03-08 | ブラザー工業株式会社 | Driver management program, uninstall program, and information processing apparatus |
| US9462080B2 (en) | 2012-04-27 | 2016-10-04 | Hewlett-Packard Development Company, L.P. | Management service to manage a file |
| JP2014006624A (en) * | 2012-06-22 | 2014-01-16 | Seiko Epson Corp | Printing system, printer, server, and printing method |
| JP5673968B2 (en) * | 2012-11-16 | 2015-02-18 | コニカミノルタ株式会社 | Image forming apparatus and image forming system |
| US8823990B2 (en) | 2012-12-31 | 2014-09-02 | International Business Machines Corporation | Print job distribution within a printing system |
| US9811319B2 (en) * | 2013-01-04 | 2017-11-07 | Microsoft Technology Licensing, Llc | Software interface for a hardware device |
| US9323543B2 (en) | 2013-01-04 | 2016-04-26 | Microsoft Technology Licensing, Llc | Capability based device driver framework |
| US20140201394A1 (en) * | 2013-01-17 | 2014-07-17 | Lantronix, Inc. | Device Driver Detection and Management System |
| US9218145B2 (en) * | 2013-01-30 | 2015-12-22 | Hewlett-Packard Development Company, L.P. | Print job management |
| US9530083B2 (en) | 2013-02-28 | 2016-12-27 | Ricoh Company, Ltd. | Input tray selection mechanism |
| US9727287B2 (en) | 2013-04-10 | 2017-08-08 | Hewlett-Packard Indigo B.V. | Data transfer system, method of transferring data, and system |
| JP5929946B2 (en) * | 2014-02-27 | 2016-06-08 | コニカミノルタ株式会社 | Image forming system, relay server, communication control method, and program |
| US9201622B2 (en) | 2014-04-29 | 2015-12-01 | Canon Kabushiki Kaisha | Devices, systems, and methods for communicating with an image-forming device from a mobile device |
| US11474767B1 (en) * | 2014-05-28 | 2022-10-18 | Amazon Technologies, Inc. | Print from web services platform to local printer |
| JP6179492B2 (en) * | 2014-09-11 | 2017-08-16 | コニカミノルタ株式会社 | Communication relay device, program, and communication relay method |
| US20170251125A1 (en) * | 2014-10-31 | 2017-08-31 | Hewlett-Packard Development Company, L.P | Controlled content delivery |
| JP2016116092A (en) * | 2014-12-16 | 2016-06-23 | 株式会社リコー | Transmission system, transmission management system, transmission terminal, transmission method, and program |
| JP2016177445A (en) * | 2015-03-19 | 2016-10-06 | 株式会社リコー | Information processing apparatus, program, and information processing system |
| GB201520380D0 (en) * | 2015-11-19 | 2016-01-06 | Qinetiq Ltd | A data hub for a cross-domain communication system |
| JP6557594B2 (en) * | 2015-12-24 | 2019-08-07 | キヤノン株式会社 | Installation control program, information processing apparatus, and device driver installation method |
| US10362108B2 (en) * | 2016-06-30 | 2019-07-23 | International Business Machines Corporation | Application transfer using time delay and proximity detection |
| US10978186B2 (en) | 2017-03-07 | 2021-04-13 | Ricoh Company, Ltd. | Personalized wearable patient identifiers that include clinical notifications |
| JP6801526B2 (en) * | 2017-03-07 | 2020-12-16 | 株式会社リコー | Information processing equipment, information processing methods and programs |
| US20180260523A1 (en) * | 2017-03-07 | 2018-09-13 | Ricoh Company, Ltd. | Personalized wearable patient identifiers that include clinical notifications |
| JP6979156B2 (en) * | 2017-08-08 | 2021-12-08 | コニカミノルタ株式会社 | Printing system, printer driver program |
| JP7024452B2 (en) * | 2018-01-29 | 2022-02-24 | ブラザー工業株式会社 | Code generation program and code generation system |
| US20190235989A1 (en) * | 2018-01-31 | 2019-08-01 | Salesforce.Com, Inc. | Queue-less analysis of application code |
| JP2019191677A (en) * | 2018-04-19 | 2019-10-31 | 富士ゼロックス株式会社 | Print data control apparatus, printing apparatus, and printing system |
| CN110941401B (en) * | 2018-09-25 | 2025-02-21 | 北京京东尚科信息技术有限公司 | Printing method and device |
| US10768873B1 (en) | 2019-05-28 | 2020-09-08 | Kyocera Document Solutions Inc. | Authentication system for printing at a device using a mobile application |
| US10831424B1 (en) | 2019-05-28 | 2020-11-10 | Kyocera Document Solutions Inc. | Authentication system with refresh tokens to print using a mobile application |
| US10970014B2 (en) | 2019-05-28 | 2021-04-06 | Kyocera Document Solutions Inc. | Authentication of user at a device using a mobile application |
| US10963202B2 (en) | 2019-05-28 | 2021-03-30 | Kyocera Document Solutions Inc. | Authentication system using a code with a mobile application |
| JP2021109355A (en) * | 2020-01-08 | 2021-08-02 | ブラザー工業株式会社 | Printing equipment |
| JP2021109354A (en) * | 2020-01-08 | 2021-08-02 | ブラザー工業株式会社 | Printing equipment and communication processing program |
| US11928376B2 (en) | 2020-07-31 | 2024-03-12 | Hewlett-Packard Development Company, L.P. | Recommended print job delivery paths |
| US11886760B2 (en) * | 2021-01-08 | 2024-01-30 | Vmware, Inc. | Print driver store for redirection printing in a virtualized computing environment |
| NL2028612B1 (en) * | 2021-07-02 | 2023-01-10 | Ultimaker Bv | System for processing 3D print jobs |
| JP2023130943A (en) * | 2022-03-08 | 2023-09-21 | 富士フイルムビジネスイノベーション株式会社 | Information processing equipment, distributed processing systems and programs |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020140971A1 (en) * | 2001-03-29 | 2002-10-03 | Noritaka Machida | Printer system, server, printing method, program and recording medium |
| US20040024835A1 (en) * | 2002-08-05 | 2004-02-05 | Howard Dennis W. | Peripheral device output job routing |
| US20090013065A1 (en) * | 2007-07-03 | 2009-01-08 | Canon Kabushiki Kaisha | Information processing apparatus, information processing apparatus control method, and storage medium storing computer program |
Family Cites Families (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH09305335A (en) * | 1996-05-16 | 1997-11-28 | Fuji Xerox Co Ltd | Printer controller |
| WO2001037075A1 (en) * | 1999-11-16 | 2001-05-25 | Seiko Epson Corporation | Printer system, printer control method, and recording medium |
| US7248385B2 (en) * | 2000-01-18 | 2007-07-24 | Minolta Co., Ltd. | Printer controller that has a printer perform print processing on print jobs transmitted from a plurality of terminals, an image forming apparatus for performing print processing on the plurality of print jobs, and a terminal that transmits print jobs to the printer controller |
| CA2398171C (en) * | 2000-01-25 | 2016-04-05 | Vistaprint Usa, Inc. | Managing print jobs |
| US7548331B2 (en) * | 2001-01-11 | 2009-06-16 | Sharp Laboratories Of America, Inc. | Methods and systems for print system component-based remote printing |
| US20020105666A1 (en) * | 2001-02-02 | 2002-08-08 | Robert Sesek | Method and system for secured printing of documents using biometric identification |
| JP4420421B2 (en) * | 2001-03-19 | 2010-02-24 | キヤノン株式会社 | Information processing apparatus and control method thereof |
| US7054021B2 (en) * | 2001-07-13 | 2006-05-30 | Hewlett-Packard Development Company, L.P. | System and method for printing multiple print jobs in a single action |
| US20030090697A1 (en) * | 2001-11-09 | 2003-05-15 | Hewlett-Packard Co. | Printer that redirects jobs to buddy printer |
| US20030206312A1 (en) * | 2002-05-01 | 2003-11-06 | Compaq Information Technologies Group, L.P. | Method and apparatus for integrating remote print-on-demand services into a local printer driver |
| US20040100649A1 (en) * | 2002-11-22 | 2004-05-27 | Johnson Bruce L. | Systems and methods of automatic recovery for disabled printers |
| US8074170B2 (en) * | 2003-07-25 | 2011-12-06 | At&T Intellectual Property I, L.P. | Methods and computer program products that conditionally route print files |
| US7649639B2 (en) * | 2004-03-12 | 2010-01-19 | Fuji Xerox Co., Ltd. | Device usage limiting method, apparatus and program |
| JP2005267544A (en) * | 2004-03-22 | 2005-09-29 | Fuji Xerox Co Ltd | Printer managing method and device, and program |
| JP4613109B2 (en) * | 2004-07-29 | 2011-01-12 | オセ−テクノロジーズ・ベー・ヴエー | Method for printing digital print file and printer to which the above method is applied |
| US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
| US7793285B2 (en) * | 2006-03-31 | 2010-09-07 | Ricoh Company, Ltd. | Web installer driver and management through a remote network |
| US9392078B2 (en) * | 2006-06-23 | 2016-07-12 | Microsoft Technology Licensing, Llc | Remote network access via virtual machine |
| US8571432B2 (en) * | 2007-01-30 | 2013-10-29 | Konica Minolta Business Technologies, Inc. | Image forming apparatus provided with function to calculate charge based on the number of sheets printed, print system including image forming apparatus, method for counting the number of sheets printed executed by image forming apparatus, and program for counting |
| US8286195B2 (en) * | 2007-10-31 | 2012-10-09 | Microsoft Corporation | Controlling hardware across two or more simultaneously running operating systems |
| JP2009214516A (en) * | 2008-03-13 | 2009-09-24 | Seiko Epson Corp | Device, system, and method for authentication output |
| US8700922B2 (en) * | 2008-09-02 | 2014-04-15 | Ca, Inc. | System and method for energy and assets saving and for improving ownership and sustainability awareness |
| US8819707B2 (en) * | 2009-06-18 | 2014-08-26 | Citrix Systems, Inc. | Methods and systems for importing a device driver into a guest computing environment |
| JP5460215B2 (en) * | 2009-09-29 | 2014-04-02 | キヤノン株式会社 | Information processing apparatus and method |
| KR20120129863A (en) * | 2010-02-11 | 2012-11-28 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | Indentifying printers |
| US8667153B2 (en) * | 2010-07-07 | 2014-03-04 | Red Hat Israel, Ltd. | Using a virtual network interface to obtain access to resources |
-
2011
- 2011-10-18 US US13/276,030 patent/US20120092719A1/en not_active Abandoned
- 2011-10-18 US US13/276,037 patent/US20120092720A1/en not_active Abandoned
- 2011-10-18 US US13/276,073 patent/US20120092723A1/en not_active Abandoned
- 2011-10-18 US US13/276,060 patent/US8854663B2/en active Active
- 2011-10-18 US US13/276,021 patent/US20120092693A1/en not_active Abandoned
- 2011-10-18 US US13/276,065 patent/US20120092722A1/en not_active Abandoned
-
2012
- 2012-11-27 US US13/686,631 patent/US20130094060A1/en not_active Abandoned
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020140971A1 (en) * | 2001-03-29 | 2002-10-03 | Noritaka Machida | Printer system, server, printing method, program and recording medium |
| US20040024835A1 (en) * | 2002-08-05 | 2004-02-05 | Howard Dennis W. | Peripheral device output job routing |
| US20090013065A1 (en) * | 2007-07-03 | 2009-01-08 | Canon Kabushiki Kaisha | Information processing apparatus, information processing apparatus control method, and storage medium storing computer program |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130014112A1 (en) * | 2011-07-05 | 2013-01-10 | Ricoh Company, Ltd. | Information processing apparatus and data management system |
| US20210336840A1 (en) * | 2012-11-14 | 2021-10-28 | Steve Belmonte | Hardware server and technical method to optimize bulk printing of physical items |
| US11658862B2 (en) * | 2012-11-14 | 2023-05-23 | Accuzip, Inc. | Hardware server and technical method to optimize bulk printing of physical items |
| US20150012913A1 (en) * | 2013-07-08 | 2015-01-08 | Fuji Xerox Co., Ltd. | Application management apparatus, application management system, application management method, and non-transitory computer readable medium |
| CN104281466A (en) * | 2013-07-08 | 2015-01-14 | 富士施乐株式会社 | Application management apparatus, application management system, and application management method |
| US9465603B2 (en) * | 2013-07-08 | 2016-10-11 | Fuji Xerox Co., Ltd. | Application management apparatus, application management system, application management method, and non-transitory computer readable medium |
| CN107533447A (en) * | 2015-04-21 | 2018-01-02 | Mw史道瑞有限公司 | Secure printing system and its processing method based on cloud |
| US20180096155A1 (en) * | 2015-04-21 | 2018-04-05 | Mwstory Co., Ltd. | Cloud-based secure printing system and method of processing same |
| JP2018520449A (en) * | 2015-04-21 | 2018-07-26 | エムダブリューストーリー カンパニー リミテッド | Cloud-based security printing system and processing method thereof |
| US10216946B2 (en) * | 2015-04-21 | 2019-02-26 | Mwstory Co., Ltd. | Cloud-based secure printing system and method of processing same |
| US11573747B2 (en) | 2020-09-25 | 2023-02-07 | Fmr Llc | Systems and methods for a printer reverse redirector |
Also Published As
| Publication number | Publication date |
|---|---|
| US20120092693A1 (en) | 2012-04-19 |
| US20120092722A1 (en) | 2012-04-19 |
| US20120092721A1 (en) | 2012-04-19 |
| US20130094060A1 (en) | 2013-04-18 |
| US20120092723A1 (en) | 2012-04-19 |
| US8854663B2 (en) | 2014-10-07 |
| US20120092720A1 (en) | 2012-04-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20120092719A1 (en) | Centralized print job routing in a distributed printing environment | |
| US11509729B2 (en) | Field service management mobile offline synchronization | |
| EP3667500B1 (en) | Using a container orchestration service for dynamic routing | |
| US6515756B1 (en) | Selecting print attribute values in a network printing system | |
| US8854665B2 (en) | Information processing system, registration device, and computer readable medium for identifying a user of a printer | |
| US8654379B2 (en) | Data processing apparatus and recording medium | |
| RU2349953C2 (en) | Translation of documents for network printing on client | |
| US8743405B2 (en) | Print relay device, print system, print relay device control method, and storage medium | |
| US20130060842A1 (en) | Remote desktop and data management system | |
| JP5293035B2 (en) | Data processing apparatus, data processing method, program, and recording medium | |
| US20130148155A1 (en) | Relay server, relay server control method, and storage medium | |
| US20130139153A1 (en) | Configuring a guest os | |
| US20120162687A1 (en) | Dynamic printing system, apparatus and method | |
| US20090147295A1 (en) | Paper name database in a print shop management system | |
| JP2018530039A (en) | Virtualization of device management services on multi-session platforms | |
| JP2016130970A (en) | Information processor, control method and program thereof | |
| US20100309500A1 (en) | Data processing apparatus, program, and recording medium | |
| US20120304200A1 (en) | Application Activation Framework | |
| US7719709B2 (en) | Print control apparatus, print control system, print control method, and recording medium having print control program | |
| US11520536B2 (en) | Information processing apparatus, control method and program therefor, and server system capable of communicating with the information processing apparatus | |
| JP2016118983A (en) | Information processor, print control method and program | |
| US8473547B2 (en) | Methods and structure for utilizing dynamic capabilities in client/server software interaction | |
| JP2016081322A (en) | Information processing device, printing system, printing method and program | |
| JP2020536314A (en) | Software deployment as a service for print services on a local network | |
| EP4208795A1 (en) | Group based application configuration |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: AVENTURA HQ, INC., COLORADO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JAUDON, JOE;LOWREY, DAVID;WILLIAMS, ADAM;SIGNING DATES FROM 20111108 TO 20111115;REEL/FRAME:027267/0385 |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |