US20230305778A1 - Cloud printing services for printing to different types of printers - Google Patents
Cloud printing services for printing to different types of printers Download PDFInfo
- Publication number
- US20230305778A1 US20230305778A1 US17/706,197 US202217706197A US2023305778A1 US 20230305778 A1 US20230305778 A1 US 20230305778A1 US 202217706197 A US202217706197 A US 202217706197A US 2023305778 A1 US2023305778 A1 US 2023305778A1
- Authority
- US
- United States
- Prior art keywords
- printer
- specific
- streams
- printing service
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F3/1261—Job scheduling, e.g. queuing, determine appropriate device by using alternate printing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1206—Improving or facilitating administration, e.g. print management resulting in increased flexibility in input data format or job format or job type
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1207—Improving or facilitating administration, e.g. print management resulting in the user being informed about print result after a job submission
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1211—Improving printing performance
- G06F3/1212—Improving printing performance achieving reduced delay between job submission and print start
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1229—Printer resources management or printer maintenance, e.g. device status, power levels
- G06F3/1232—Transmitting printer device capabilities, e.g. upon request or periodically
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1244—Job translation or job parsing, e.g. page banding
- G06F3/1247—Job translation or job parsing, e.g. page banding by conversion to printer ready format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1274—Deleting of print job
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1287—Remote printer device, e.g. being remote from client or server via internet
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1292—Mobile client, e.g. wireless printing
Definitions
- the following disclosure relates to the field of printing, and more particularly, to printing services.
- PSP Print Service Providers
- a PSP typically operates a print shop that includes a variety of printers managed by a print server.
- a print shop that includes a variety of printers managed by a print server.
- the printer marks a print medium (e.g., paper) based on the incoming print data of the print job resulting in a print product, such as advertising or marketing materials, product manuals, books, invoices/bills, blueprints, mailings, etc.
- a user will commonly submit a file or document for the print job in a file format or image format, such as Portable Document Format (PDF), Tag Image File Format (TIFF), Joint Photographic Experts Group (JPEG), etc.
- PDF Portable Document Format
- TIFF Tag Image File Format
- JPEG Joint Photographic Experts Group
- the print server selects a printer for the print job, transforms the file or document of the print job into a print stream according to the Page Description Language (PDL) understood by the selected printer, and transfers the print stream to the selected printer.
- PDL Page Description Language
- One potential issue is the print server has limited resources for processing print jobs, and large print jobs may take an extended period of time to process.
- the print server may have to select an alternate printer of a different type and re-transform the file or document of the print job into a print stream according to the PDL understood by the alternate printer. This again may take an extended period of time, making it difficult for the PSP to meet an agreed-upon timeline for printing the print job.
- Embodiments described herein are printing systems and methods of operating a printing system where the transform process of transforming a file or document of a print job into a PDL-compliant print stream is decoupled from the print server, and the transform process is moved to the cloud.
- a cloud printing service maintains information for different printers, such as for a print shop.
- the cloud printing service transforms the file or document of the print job into multiple print streams each specific to an individual printer.
- the print server may then retrieve one or more of the print streams for the print job from the cloud printing service to print the print job on a desired printer.
- the cloud printing service as described herein provides a technical benefit in that a cloud-computing platform is “serverless” and can spin up additional resources as needed for processing print jobs.
- the cloud printing service may be faster and more effective at processing large print jobs.
- the cloud printing service can create the multiple print streams for the different printers in parallel so that the print server may print the print job on any of the printers as desired.
- a PSP may manage a vendor-neutral fleet of printers through the cloud printing service.
- a printing system comprises processing resources and storage resources provisioned on a cloud-computing platform to implement a cloud printing service.
- the processing resources at least cause the cloud printing service to store device capability information for different types of printers supervised by a print server, receive a print job, identify a plurality of the printers that are capable of printing the print job based on the device capability information, and transform printable content and control data of the print job into a plurality of printer-specific print streams.
- Each of the printer-specific print streams is in a printable output format for one of the plurality of the printers.
- the processing resources at least cause the cloud printing service to provide one or more of the printer-specific print streams to the print server.
- the processing resources at least cause the cloud printing service to wait for confirmation from the print server that the print job has ended, and delete the printer-specific print streams after a retention period in response to receiving the confirmation.
- the processing resources at least cause the cloud printing service to transform the printable content and the control data of the print job into the plurality of printer-specific print streams in parallel.
- the printing system further comprises the print server comprising at least one processor and memory.
- the processor causes the print server to receive a message from the cloud printing service that the print job is pending, select a printer from the plurality of the printers as a selected printer for printing the print job, and retrieve the one or more of the printer-specific print streams from the cloud printing service.
- the one or more of the printer-specific print streams retrieved by the print server includes a first printer-specific print stream for the selected printer.
- the processor causes the print server to schedule the first printer-specific print stream to print at the selected printer.
- the processor causes the print server to retrieve the first printer-specific print stream from the cloud printing service exclusively in response to selecting the selected printer for printing the print job.
- the processor causes the print server to retrieve multiple ones of the printer-specific print streams from the cloud printing service for multiple printers of the plurality of the printers determined to be available to print the print job.
- the processor causes the print server to retrieve a print job package from the cloud printing service that contains each of the printer-specific print streams generated by the cloud printing service.
- the processor causes the print server to monitor progress of the print job at the selected printer, and select, when an error occurs, another printer from the plurality of the printers as an alternate printer for printing the print job.
- the one or more of the printer-specific print streams retrieved by the print server includes a second printer-specific print stream for the alternate printer.
- the processor causes the print server to schedule the second printer-specific print stream to print at the alternate printer.
- a method of operating a printing system comprises the following steps performed at a cloud printing service: storing device capability information for different types of printers supervised by a print server, receiving a print job, identifying a plurality of the printers that are capable of printing the print job based on the device capability information, and transforming printable content and control data of the print job into a plurality of printer-specific print streams.
- Each of the printer-specific print streams is in a printable output format for one of the plurality of the printers.
- the method further comprises providing one or more of the printer-specific print streams from the cloud printing service to the print server.
- the method further comprises the following steps performed at the cloud printing service: waiting for confirmation from the print server that the print job has ended, and deleting the printer-specific print streams from the cloud printing service after a retention period in response to receiving the confirmation.
- transforming the printable content and the control data of the print job into the plurality of printer-specific print streams at the cloud printing service comprises transforming the printable content and the control data of the print job into the plurality of printer-specific print streams in parallel.
- the method further comprises the following steps performed at the print server: receiving a message from the cloud printing service that the print job is pending, selecting a printer from the plurality of the printers as a selected printer for printing the print job, and retrieving the one or more of the printer-specific print streams from the cloud printing service.
- the one or more of the printer-specific print streams retrieved by the print server includes a first printer-specific print stream for the selected printer.
- the method further comprises scheduling the first printer-specific print stream to print at the selected printer.
- retrieving the one or more of the printer-specific print streams from the cloud printing service comprises retrieving the first printer-specific print stream from the cloud printing service exclusively in response to selecting the selected printer for printing the print job.
- retrieving the one or more of the printer-specific print streams from the cloud printing service comprises retrieving multiple ones of the printer-specific print streams from the cloud printing service for multiple printers of the plurality of the printers determined to be available to print the print job.
- retrieving the one or more of the printer-specific print streams from the cloud printing service comprises retrieve a print job package from the cloud printing service that contains each of the printer-specific print streams generated by the cloud printing service.
- the method further comprising the following steps performed at the print server: monitoring progress of the print job at the selected printer, and selecting, when an error occurs, another printer from the plurality of the printers as an alternate printer for printing the print job.
- the one or more of the printer-specific print streams retrieved by the print server includes a second printer-specific print stream for the alternate printer.
- the method further comprises scheduling the second printer-specific print stream to print at the alternate printer.
- FIG. 1 illustrates a printing system in an illustrative embodiment.
- FIG. 2 is a block diagram of a cloud printing service in an illustrative embodiment.
- FIG. 3 is a block diagram of a print server in an illustrative embodiment.
- FIG. 4 is a flow chart illustrating a method of operating a print server in combination with a cloud printing service in an illustrative embodiment.
- FIG. 5 is a block diagram of a print server providing device capability information to a cloud printing service in an illustrative embodiment.
- FIG. 6 is a flow chart illustrating a method of providing a cloud printing service in an illustrative embodiment.
- FIG. 7 is a block diagram illustrating a cloud printing service receiving a print job from a user in an illustrative embodiment.
- FIG. 8 is a flow chart illustrating a method of providing printer-specific print streams to a print server in an illustrative embodiment.
- FIG. 9 is a flow chart illustrating a further method of operating a print server in combination with a cloud printing service in an illustrative embodiment.
- FIG. 10 is a flow chart illustrating a further method of operating a print server in combination with a cloud printing service in an illustrative embodiment.
- FIG. 11 illustrates a processing system operable to execute a computer readable medium embodying programmed instructions to perform desired functions in an illustrative embodiment.
- FIG. 1 illustrates a printing system 100 in an illustrative embodiment.
- printing system 100 includes a cloud printing service 110 , a print server 120 , and a plurality of printers 121 - 123 .
- Print server 120 and printers 121 - 123 are illustrated in a print shop 126 of a PSP or the like that provides printing services to users/customers in exchange for monetary compensation.
- print shop 126 may be configured to provide commercial and/or industrial printing services, which are referred to herein as production printing services.
- print shop 126 may be configured to provide other types of services in other embodiments.
- Printers 121 - 123 are shown as being at the same location in the example of FIG. 1 , but may be at different locations in other examples.
- Print server 120 is an intermediary between the cloud printing service 110 and printers 121 - 123 .
- Print server 120 may be considered “on the ground” with printers 121 - 123 by being directly connected to printers 121 - 123 via wired or wireless connections.
- print server 120 is configured to manage or supervise different types of printers 121 - 123 that have different specifications.
- printers 121 - 123 may be a production printer (e.g., continuous-feed inkjet printer), desktop printer, 3D printer, plotter or wide-format printer, etc.
- printers 121 - 123 may be from different manufacturers, such as Ricoh, Hewlett-Packard (HP), Konica, Canon, Kyocera, etc., and/or have different hardware, software, operating systems, etc.
- One or more of printers 121 - 123 may be configured to print on different types or forms of print media, such as standard weight paper, glossy or matte stock, cut-sheet, continuous-forms, etc.
- One or more of printers 121 - 123 may be configured to print on different media sizes, such as letter, legal, A4, extra-large, etc.
- One or more of printers 121 - 123 may be configured to print in different colors, such as color or monochrome.
- One or more of printers 121 - 123 may be configured with different finishing or post-print options, such as glosses or textures, binding, cutting/trimming, embossing, laminating, etc.
- a printer 121 - 123 generally includes a print controller and one or more print engines.
- the print controller receives a printer-compliant print stream (e.g., PDL-compliant data), generates rasterized data from the printer-compliant print stream, and transmits the rasterized data to one or more print engines, which mark a print media with the rasterized data.
- the print engine may use a variety of marking materials for marking a print media, such as ink (e.g., water, solvent, oil, or UV-curable), oil-based paints, additive manufacturing materials, toner, etc.
- the print media may comprise any type of material upon which ink or another type of marking material is applied, such as paper, plastic, card stock, transparent sheets, a substrate for 3D printing, cloth, etc.
- Print shop 126 may include other printers or other devices not shown in FIG. 1 .
- Printing system 100 may also include multiple print shops or other entities that utilize the cloud-printing service 110 .
- Cloud-printing service 110 is implemented on a cloud-computing platform 112 .
- Cloud-computing allows users access to a variety of services over an internet connection.
- Some examples of cloud-computing platform 112 may comprise Amazon Web Services (AWS), Google Cloud, Microsoft Azure, etc.
- Cloud printing service 110 acts as a front-end for a printing service provided by a PSP or the like.
- a user 140 or customer
- the cloud printing service 110 translates the print job 102 into a plurality of printer-specific print streams that are stored in the cloud.
- Print server 120 is able to pull or otherwise retrieve a printer-specific print stream for an appropriate printer 121 - 123 from the cloud, and send the printer-specific print stream to the printer 121 - 123 to generate printed output. Operation of the cloud printing service 110 and the print server 120 are described in more detail below.
- Print server 120 is shown in FIG. 1 as being able to communicate with the cloud printing service 110 over the internet 130 .
- host device 142 is shown as being able to communicate with the cloud printing service 110 over the internet 130 .
- the internet 130 as referred to herein is a system of interconnected computer networks that uses the Internet protocol suite (e.g., TCP/IP) to communicate between networks and devices, although other protocols may be developed in the future.
- TCP/IP Internet protocol suite
- FIG. 2 is a block diagram of the cloud printing service 110 in an illustrative embodiment.
- cloud resources are provisioned in a cloud-computing environment (e.g., AWS), such as processing resources 202 and storage resources 204 (although other resources are considered herein).
- a printing front-end application 206 may be built upon the provisioned resources with instructions 208 , programming, code, etc.
- printing front-end application 206 provides a device capability controller 210 , a user interface (I/F) 212 , and a print job converter 214 .
- Device capability controller 210 is configured to manage device capability information 211 for printers, such as printers 121 - 123 of print shop 126 .
- device capability controller 210 may obtain, collect, or receive device capability (DEVCAP) information 211 - 1 , 211 - 2 , and 211 - 3 for printers 121 , 122 , and 123 , respectively.
- Device capability information 211 indicates the printer capabilities and/or attributes of a printer.
- the device capability information 211 may include a printer manufacturer, a printer model, a serial number, printer resolution, print engine type (e.g., color or monochrome), printer speed, media types supported, media sizes supported, PDLs supported (e.g., PostScript, Printer Command Languages (PCL), etc.), network protocols supported (e.g., TCP/IP, Line Printer Remote (LPR), Internet Printing Protocol (IPP), Hypertext Transfer Protocol (HTTP), Simple Network Management Protocol (SNMP), etc.), page layouts supported (e.g., N-up), post-print or finishing activities supported (e.g., binding, cutting/trimming, embossing, laminating, etc.), and/or other capabilities or attributes.
- PDLs supported e.g., PostScript, Printer Command Languages (PCL), etc.
- network protocols supported e.g., TCP/IP, Line Printer Remote (LPR), Internet Printing Protocol (IPP), Hypertext Transfer Protocol (HTTP), Simple Network Management Protocol (SNMP), etc.
- User interface 212 is a module of the cloud printing service 110 that interacts with users 140 , such as to submit print jobs 102 to the cloud printing service 110 .
- user interface 212 may comprise a portal 213 that provides a user 140 access to the cloud printing service 110 .
- portal 213 may provide a login page for a user 140 , a print tools page that allows a user to upload or submit print jobs 102 or print files, define control data for print files (e.g., through a default template or custom template), etc., and/or provide any other desired pages for the cloud printing service 110 .
- user interface 212 may allow users 140 to submit print jobs 102 through email, File Transfer Protocol (FTP), or through another means.
- FTP File Transfer Protocol
- Print job converter 214 is configured to generate a plurality of printer-specific print streams 222 for different printers 121 - 123 from the print job 102 .
- a print job 102 submitted from a user 140 to the cloud printing service 110 may be considered a “raw” print job, as the print job 102 cannot be consumed directly by a printer 121 - 123 .
- a print job 102 as described herein includes printable content (e.g., the content of text and/or images that are actually to be printed and seen on a resulting printed page), and control data that describes other attributes of the printing task that is independent of the printable content.
- the printable content for a print job 102 may comprise a file or document for printing (e.g., a .pdf document).
- the control data for a print job 102 may comprise a job ticket (e.g., Job Definition Format (JDF) job ticket), or other information describing attributes for printing the print job 102 (e.g., media size, number of copies, color or greyscale, resolution, etc.).
- JDF Job Definition Format
- print job converter 214 is configured to convert the printable content and control data of a print job 102 into multiple print streams 222 .
- a print stream 222 comprises print data in a printable output format or a device-specific format that a printer 121 - 123 consumes directly to print content on print media.
- print job converter 214 is configured to convert the printable content and control data of a print job 102 into multiple PDL-compliant print streams for the different printers 121 - 123 .
- a PDL-compliant print stream contains the printable content and control data of a print job 102 that is formatted according to the PDL interpretable or understood by a printer 121 - 123 .
- print job converter 214 may act as the last stage in creating or formatting a PDL-compliant print stream for a printer.
- Each print stream 222 generated by print job converter 214 from the print job 102 is specific to a candidate printer for printing the print job 102 .
- printers 121 - 123 are candidates for printing a print job 102 .
- print stream 222 - 1 may be specific for printer 121
- print stream 222 - 2 may be specific for printer 122
- print stream 222 - 3 may be specific for printer 123 .
- Each printer 121 - 123 requires a different print stream 222 for printing the print job 102 , such as based on a PDL used at the printer 121 - 123 , specification or attributes of the printer 121 - 123 , etc.
- print job converter 214 transforms the printable content and control data of a print job 102 into different print streams 222 for the different printers 121 - 123 .
- a collection of the printer-specific print streams 222 is referred to as a print job package 220 that is stored by printing front-end application 206 .
- FIG. 3 is a block diagram of print server 120 in an illustrative embodiment.
- print server 120 includes the following subsystems: an interface component 302 , a device capabilities controller 304 , and a print manager 306 .
- Interface component 302 is a hardware component or circuitry that communicates with external device, systems, or entities, such as printers 121 - 123 and the printing front-end application 206 .
- interface component 302 may exchange communications with printers 121 - 123 based on a native protocol of the printers 121 - 123 .
- Interface component 302 may also exchange communications with the printing front-end application 206 over a network connection 132 via the internet 130 , such as messages, data (e.g., print streams), Application Programming Interface (API) calls, etc. Interface component 302 may use a variety of protocols for communication.
- communications such as messages, data (e.g., print streams), Application Programming Interface (API) calls, etc.
- Interface component 302 may use a variety of protocols for communication.
- Device capabilities controller 304 comprises circuitry, logic, hardware, means, etc., configured to acquire device capability information 211 for printers 121 - 123 and/or other devices. For example, device capabilities controller 304 may query printers 121 - 123 to acquire device capability information 211 , may receive input regarding the device capability information 211 (e.g., from an operator, from a manufacturer, etc.), or otherwise acquire the device capability information 211 . Device capabilities controller 304 is further configured to interact with printing front-end application 206 to provide the device capability information 211 to printing front-end application 206 .
- Print manager 306 comprises circuitry, logic, hardware, means, etc., configured to supervise or manage a plurality of printers 121 - 123 and printing processes performed by the printers 121 - 123 .
- print manager 306 includes a scheduler 308 and a job spool 310 .
- Job spool 310 comprises a memory configured to temporarily store or queue print streams for print jobs 102 received at print server 120 .
- Scheduler 308 is configured to schedule the print streams from job spool 310 at one or more of printers 121 - 123 .
- One or more of the subsystems of print server 120 may be implemented on a hardware platform comprised of analog and/or digital circuitry.
- One or more of the subsystems of print server 120 may be implemented on a processor 330 that executes instructions 334 stored in memory 332 .
- a processor 330 comprises an integrated hardware circuit configured to execute instructions 334 to provide the functions of print server 120 .
- Processor 330 may comprise a set of one or more processors or may comprise a multi-processor core, depending on the particular implementation.
- Memory 332 is a non-transitory computer readable medium for data, instructions, applications, etc., and is accessible by processor 330 .
- Memory 332 is a hardware storage device capable of storing information on a temporary basis and/or a permanent basis. Memory 332 may comprise a random-access memory, or any other volatile or non-volatile storage device.
- FIG. 4 is a flow chart illustrating a method 400 of operating print server 120 in combination with a cloud printing service 110 in an illustrative embodiment.
- the steps of method 400 will be described with reference to print server 120 in FIG. 3 , but those skilled in the art will appreciate that method 400 may be performed in other systems or devices. Also, the steps of the flow charts described herein are not all inclusive and may include other steps not shown, and the steps may be performed in an alternative order.
- Device capabilities controller 304 of print server 120 obtains, receives, or collects device capability information 211 for printers 121 - 123 (step 402 ).
- Device capabilities controller 304 may collect the device capability information 211 in a variety of ways.
- device capabilities controller 304 may communicate with the printers 121 - 123 to request the device capability information 211 , such as through interface component 302 .
- device capabilities controller 304 may use Job Messaging Format (JMF), SNMP, or another protocol to query printers 121 - 123 for the device capability information 211 , printer status (e.g., availability, toner/ink levels, number of pages printed, etc.), and/or other information.
- JMF Job Messaging Format
- SNMP Simple SNMP
- printer status e.g., availability, toner/ink levels, number of pages printed, etc.
- an operator of print shop 126 or another user may enter the device capability information 211 into device capabilities controller 304 , such as through a Graphical User Interface (GUI).
- device capabilities controller 304 may obtain the device capability information 211 from a manufacturer of the printer 121 - 123 or another entity.
- Device capabilities controller 304 may collect the device capability information 211 in these and/or other ways to build a capability profile for each of the printers 121 - 123 .
- Device capabilities controller 304 transmits, uploads, or provides the device capability information 211 to the cloud printing service 110 (step 404 ).
- interface component 302 may establish a network connection 132 with the cloud printing service 110 over the internet 130 , and device capabilities controller 304 may transmit the device capability information 211 to the cloud printing service 110 over the network connection 132 .
- Device capabilities controller 304 may transmit the device capability information 211 as a batch for printers 121 - 123 , or may transmit the device capability information 211 individually for printers 121 - 123 .
- FIG. 5 is a block diagram of print server 120 providing the device capability information 211 to the cloud printing service 110 in an illustrative embodiment.
- the device capability information 211 may be for any type of device in print shop 126 , such as pre-print devices or finishing devices associated with printers 121 - 123 .
- FIG. 6 is a flow chart illustrating a method 600 of providing a cloud printing service 110 in an illustrative embodiment. The steps of method 600 will be described with reference to printing front-end application 206 in FIG. 2 , but those skilled in the art will appreciate that method 600 may be performed in other applications or systems on a cloud-computing platform.
- Device capabilities controller 210 of printing front-end application 206 stores device capability information 211 for printers 121 - 123 (step 602 ), such as received from print server 120 . Because printers 121 - 123 are of different types, the device capability information 211 for each printer 121 - 123 may be distinct. Device capabilities controller 210 may store the device capability information 211 in a profile or device capability file for each of the printers 121 - 123 and/or other devices of print shop 126 . Device capabilities controller 210 may also manage or update the device capability information 211 as needed by contacting print server 120 and requesting any desired updates. Device capabilities controller 210 may also make the device capability information 211 available to user interface 212 for use in a print tools page or the like, where a user 140 is able to select a particular printer 121 - 123 for a print job 102 .
- a user 140 is able to access the cloud printing service 110 to request a printing process for a print job 102 .
- user interface 212 (through portal 213 ) may provide a print tools page or the like to the user 140 in accessing the cloud printing service 110 .
- the user 140 may provide a file or document (or multiple files or documents) for a print job 102 , such as by uploading the file, specifying a path on a local computer or a Uniform Resource Locator (URL) for the file, etc.
- the user 140 may also specify control data for the print job 102 .
- the user 140 may provide a job ticket (e.g., a JDF job ticket) that describes attributes for the print job 102 .
- the job ticket may include job settings or a job description for any pre-print, print, post-print, and/or delivery of the print job.
- User interface 212 may also allow the user 140 to enter one or more attributes for the print job 102 into the print tools page or the like.
- FIG. 7 is a block diagram illustrating the cloud printing service 110 receiving a print job 102 from a user 140 in an illustrative embodiment.
- Print job 102 includes printable content 704 (e.g., a file or document) and control data 706 .
- the printable content 704 is independent from a printer and is not formatted according to a PDL for a printer (i.e., non-PDL-compliant), which means the printable content 704 is not directly consumable by a printer.
- the control data 706 may also be considered as a separate “package” from the printable content 704 , such as a job ticket.
- print job converter 214 of printing front-end application 206 identifies printers 121 - 123 that are capable of printing the print job 102 based on the device capability information 211 (step 606 ).
- Print job converter 214 may process the control data 706 for the print job 102 , and determine which printers 121 - 123 (also referred to as candidate printers) are capable of and/or configured to print the print job 102 based on the device capability information 211 specified for each printer 121 - 123 .
- print job converter 214 determines which of printers 121 - 123 are capable of printing in color based on the device capability information 211 . If the control data 706 for the print job 102 specifies printing on high-gloss stock, then print job converter 214 determines which of printers 121 - 123 are loaded with high-gloss stock based on the device capability information 211 .
- Print job converter 214 may identify a single printer 121 - 123 that is capable of printing the print job 102 , but it is assumed for this embodiment that multiple printers 121 - 123 are capable of printing the print job 102 . It is also assumed that print job converter 214 identifies printers 121 - 123 of different types that have different specifications.
- Print job converter 214 transforms or converts the printable content 704 and control data 706 of the print job 102 into a plurality of printer-specific print streams 222 (step 608 ).
- a printer-specific print stream 222 comprises print data in a printable output format or a device-specific format for a specific printer that the printer consumes directly.
- print job converter 214 transforms the printable content 704 and control data 706 of the print job 102 into a printer-specific print stream 222 - 1 for printer 121 (see also, FIG. 2 ).
- print job converter 214 transforms the printable content 704 and control data 706 of the print job 102 into a printer-specific print stream 222 - 2 for printer 122 and a printer-specific print stream 222 - 3 for printer 123 .
- the printer-specific print streams 222 may also be referred to as PDL-compliant print streams for specific printers 121 - 123 .
- Print job converter 214 may process the device capability information 211 for a printer 121 - 123 to determine which printable output format or a device-specific format is used for that printer 121 - 123 , and transform the printable content 704 and control data 706 accordingly.
- Print job converter 214 may have processing resources 202 and storage resources 204 available to transform the printable content 704 and control data 706 of the print job 102 into the printer-specific print streams 222 in parallel (optional step 620 ). In other words, print job converter 214 may generate the printer-specific print streams 222 simultaneously from the printable content 704 and control data 706 .
- Printers 121 - 123 of different types are configured to receive a print stream 222 in a different printable output format.
- printers 121 - 123 from different manufacturers may use different printable output formats.
- different models of printers 121 - 123 from the same manufacturer may use different printable output formats.
- print job converter 214 creates a printer-specific print stream 222 for each of the candidate printers 121 - 123 based on the printable output formats for those candidate printers 121 - 123 .
- Print job converter 214 stores the printer-specific print streams 222 in a storage location (e.g., storage resources 204 ) as a print job package 220 that is available to print server 120 .
- Print job converter 214 may also store metadata for the printer-specific print streams 222 , such as printer identifiers (IDs) for the printers 121 - 123 that are mapped to the printer-specific print streams 222 .
- IDs printer identifiers
- print job converter 214 provides one or more of the printer-specific print streams 222 to print server 120 (step 610 ).
- print job converter 214 makes the printer-specific print streams 222 available to print server 120 for use in printing the print job 102 .
- print job converter 214 may provide a path (e.g., URL) to the printer-specific print streams 222 at a storage location, may store the printer-specific print streams 222 in a shared storage location, may transmit the printer-specific print streams 222 to the print server 120 over the network connection 132 , etc.
- Print job converter 214 then waits for confirmation that the print job 102 has ended (step 612 ).
- print job converter 214 may provide the printer-specific print stream(s) 222 to print server 120 in a variety of ways, one way is for the print server 120 to pull the printer-specific print stream(s) 222 from the cloud printing service 110 .
- FIG. 8 is a flow chart illustrating a method 800 of providing printer-specific print streams 222 to print server 120 in an illustrative embodiment.
- print job converter 214 may set up or establish a network connection 132 (e.g., secure network connection) with print server 120 over the internet 130 (step 802 ), if not already established.
- Print job converter 214 transmits a notification or message to print server 120 indicating that a print job 102 is pending (step 804 ).
- print job converter 214 may transmit the message to the print server 120 over the network connection 132 .
- print job converter 214 may send an email with the message, or may otherwise notify print server 120 of the pending print job 102 .
- the message from print job converter 214 may include metadata for the print job 102 , such as a customer ID for the user 140 submitting the print job 102 , a job ID or name for the print job 102 , a list of printers 121 - 123 that are capable of printing the print job 102 , and/or other information.
- the metadata for the print job 102 may include a reference to the print job package 220 and/or printer-specific print streams 222 generated for the print job 102 , such as storage location (e.g., URL) where the print job package 220 and/or printer-specific print streams 222 are stored.
- the metadata for the print job 102 may indicate a primary printer 121 - 123 for printing the print job 102 , a secondary or alternate printer 121 - 123 , etc.
- FIG. 9 is a flow chart illustrating a further method 900 of operating print server 120 in combination with a cloud printing service 110 in an illustrative embodiment.
- print manager 306 of print server 120 receives the message or notification from the cloud printing service 110 that a print job 102 is pending (step 902 ).
- Print manager 306 selects a printer 121 - 123 for printing the print job 102 (step 904 ).
- print manager 306 may determine which printers 121 - 123 are capable of and/or configured to print the print job 102 , determine the availability of printers 121 - 123 for printing the print job 102 , and select one (or more) of the printers 121 - 123 based on capability and availability. For example, print manager 306 may query device capabilities controller 304 to determine capability, may poll printers 121 - 123 to determine availability or printer status, may process an internal queue or the like to determine availability, etc. Print manager 306 may determine which of the printers 121 - 123 are capable of printing the print job 102 based on the metadate for the print job 102 provided by the cloud printing service 110 . It is noted that print manager 306 may select multiple printers 121 - 123 for printing the print job 102 .
- print manager 306 retrieves, requests, or obtains one or more of the printer-specific print streams 222 for the print job 102 from the cloud printing service 110 (step 906 ).
- Print manager 306 may retrieve one, several, or all of the printer-specific print streams 222 in the print job package 220 from the cloud printing service 110 over the network connection 132 .
- print manager 306 may select a single one of the printers 121 - 123 for printing the print job 102 .
- print manager 306 may retrieve the printer-specific print stream 222 (e.g., a first printer-specific print stream) from the cloud printing service 110 exclusively for the selected printer 121 - 123 (optional step 910 ). This may be beneficial as the only the printer-specific print stream 222 for the selected printer 121 - 123 is sent over the network connection 132 . In one embodiment, print manager 306 may determine that multiple printers 121 - 123 are available for printing the print job 102 , and retrieve the printer-specific print streams 222 from the cloud printing service 110 for the multiple printers 121 - 123 determined to be available (optional step 912 ).
- the printer-specific print stream 222 e.g., a first printer-specific print stream
- print manager 306 may retrieve the print job package 220 from the cloud printing service 110 that contains each of the printer-specific print streams 222 generated by the cloud printing service 110 (optional step 914 ).
- the print server 120 will receive the printer-specific print streams 222 for each of the printers 121 - 123 , and can dynamically select which printer(s) 121 - 123 to use or may switch between printers 121 - 123 , such as in response to a print error on one of the printers 121 - 123 (e.g., out of paper, toner, or ink, paper jam, etc.).
- print manager 306 may store the printer-specific print stream(s) 222 in memory 332 .
- Print manager 306 (through scheduler 308 ) schedules a printer-specific print stream 222 for the print job 102 at the selected printer 121 - 123 (step 908 ).
- print manager 306 may select a first printer (e.g., printer 121 ) for the print job 102 (if not already selected), and schedule the first printer-specific print stream 222 for the print job 102 at the first printer 121 .
- print manager 306 submits, delivers, or transfers the printer-specific print stream 222 for the print job 102 to the selected printer 121 - 123 . Because the printer-specific print stream 222 is in the appropriate format, the selected printer 121 - 123 is able to directly print the printer-specific print stream 222 and generate print output for the print job 102 . It is noted that print manager 306 may schedule different printer-specific print streams 222 for the print job 102 on different printers 121 - 123 as desired, such as to print different portions of the print job 102 .
- FIG. 10 is a flow chart illustrating a further method 1000 of operating print server 120 in combination with a cloud printing service 110 in an illustrative embodiment.
- print manager 306 monitors the progress of the print job 102 at the selected printer 121 - 123 (step 1002 ).
- print manager 306 may select an alternate or substitute printer 121 - 123 for the print job 102 (step 1004 ) or identify a printer 121 - 123 previously-selected as an alternate.
- Print manager 306 retrieves or obtains the printer-specific print stream 222 (e.g., second printer-specific print stream) for the alternate printer 121 - 123 .
- print manager 306 may retrieve the printer-specific print stream 222 for the alternate printer 121 - 123 from the cloud printing service 110 over the network connection 132 . If the printer-specific print stream 222 for the alternate printer 121 - 123 was already retrieved from the cloud printing service 110 , print manager 306 may retrieve the printer-specific print stream 222 for the alternate printer 121 - 123 from local memory (e.g., memory 332 ).
- Print manager 306 (through scheduler 308 ) schedules the printer-specific print stream 222 for the print job 102 at the alternate printer 121 - 123 (step 1006 ).
- print manager 306 deletes the printer-specific print stream(s) 222 for the print job 102 from memory 332 (step 1008 ).
- Print manager 306 also transmits a status message to the cloud printing service 110 indicating that the print job 102 has ended (step 1010 ), such as over the network connection 132 .
- the status message may further include audit information (e.g., amount of paper used, amount of ink used etc.) or other information.
- print job converter 214 when print job converter 214 receives a status message confirming that the print job 102 has ended, print job converter 214 deletes the printer-specific print stream(s) 222 for the print job 102 after a retention period (step 614 ). Print job converter 214 or print server 120 may then tear down the network connection 132 .
- One technical benefit of the cloud printing service 110 as discussed above is the process of transforming the printable content 704 and control data 706 of a print job 102 into a printer-specific print stream 222 is decoupled from a print server 120 that manages a plurality of printers 121 - 123 .
- a print server 120 has limited processing and memory resources whereas a cloud-computing platform 112 is “serverless” and can spin up additional resources as needed for processing.
- the cloud printing service 110 can convert the printable content 704 and control data 706 of the print job 102 into a plurality of printer-specific print streams 222 in parallel, and make the printer-specific print streams 222 available to the print server 120 for use as needed at individual printers 121 - 123 .
- the print server 120 may therefore be lightweight without any printer drivers, if desired.
- FIG. 11 illustrates a processing system 1100 operable to execute a computer readable medium embodying programmed instructions to perform desired functions in an illustrative embodiment.
- Processing system 1100 is operable to perform the above operations by executing programmed instructions tangibly embodied on computer readable storage medium 1112 .
- embodiments can take the form of a computer program accessible via computer-readable medium 1112 providing program code for use by a computer or any other instruction execution system.
- computer readable storage medium 1112 can be anything that can contain or store the program for use by the computer.
- Computer readable storage medium 1112 can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor device. Examples of computer readable storage medium 1112 include a solid-state memory, a magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W), and DVD.
- CD-ROM compact disk-read only memory
- CD-R/W compact disk-read/write
- Processing system 1100 being suitable for storing and/or executing the program code, includes at least one processor 1102 coupled to program and data memory 1104 through a system bus 1150 .
- Program and data memory 1104 can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code and/or data in order to reduce the number of times the code and/or data are retrieved from bulk storage during execution.
- I/O devices 1106 can be coupled either directly or through intervening I/O controllers.
- Network adapter interfaces 1108 may also be integrated with the system to enable processing system 1100 to become coupled to other data processing systems or storage devices through intervening private or public networks. Modems, cable modems, IBM Channel attachments, SCSI, Fibre Channel, and Ethernet cards are just a few of the currently available types of network or host interface adapters.
- Display device interface 1110 may be integrated with the system to interface to one or more display devices, such as printing systems and screens for presentation of data generated by processor 1102 .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
System, method, and software of providing a printing service. In one embodiment, a printing system comprises a cloud printing service that stores device capability information for different types of printers supervised by a print server. The cloud printing service receives a print job, identifies a plurality of the printers that are capable of printing the print job based on the device capability information, and transforms printable content and control data of the print job into a plurality of printer-specific print streams. Each of the printer-specific print streams is in a printable output format for one of the plurality of the printers. The cloud printing service provides one or more of the printer-specific print streams to the print server.
Description
- The following disclosure relates to the field of printing, and more particularly, to printing services.
- Print Service Providers (PSP) or other providers offer printing services to users/customers in exchange for monetary compensation. A PSP typically operates a print shop that includes a variety of printers managed by a print server. For a printing service in general, a user submits a print job to the PSP, and the print server schedules the print job with a printer under its domain. The printer marks a print medium (e.g., paper) based on the incoming print data of the print job resulting in a print product, such as advertising or marketing materials, product manuals, books, invoices/bills, blueprints, mailings, etc.
- A user will commonly submit a file or document for the print job in a file format or image format, such as Portable Document Format (PDF), Tag Image File Format (TIFF), Joint Photographic Experts Group (JPEG), etc. The print server selects a printer for the print job, transforms the file or document of the print job into a print stream according to the Page Description Language (PDL) understood by the selected printer, and transfers the print stream to the selected printer. One potential issue is the print server has limited resources for processing print jobs, and large print jobs may take an extended period of time to process. Another potential issue is if an error occurs in printing the print job at the selected printer, the print server may have to select an alternate printer of a different type and re-transform the file or document of the print job into a print stream according to the PDL understood by the alternate printer. This again may take an extended period of time, making it difficult for the PSP to meet an agreed-upon timeline for printing the print job.
- Embodiments described herein are printing systems and methods of operating a printing system where the transform process of transforming a file or document of a print job into a PDL-compliant print stream is decoupled from the print server, and the transform process is moved to the cloud. As an overview, a cloud printing service maintains information for different printers, such as for a print shop. When receiving a print job from a user, the cloud printing service transforms the file or document of the print job into multiple print streams each specific to an individual printer. The print server may then retrieve one or more of the print streams for the print job from the cloud printing service to print the print job on a desired printer. The cloud printing service as described herein provides a technical benefit in that a cloud-computing platform is “serverless” and can spin up additional resources as needed for processing print jobs. Thus, the cloud printing service may be faster and more effective at processing large print jobs. Also, the cloud printing service can create the multiple print streams for the different printers in parallel so that the print server may print the print job on any of the printers as desired. Thus, a PSP may manage a vendor-neutral fleet of printers through the cloud printing service.
- In one embodiment, a printing system comprises processing resources and storage resources provisioned on a cloud-computing platform to implement a cloud printing service. The processing resources at least cause the cloud printing service to store device capability information for different types of printers supervised by a print server, receive a print job, identify a plurality of the printers that are capable of printing the print job based on the device capability information, and transform printable content and control data of the print job into a plurality of printer-specific print streams. Each of the printer-specific print streams is in a printable output format for one of the plurality of the printers. The processing resources at least cause the cloud printing service to provide one or more of the printer-specific print streams to the print server.
- In one embodiment, the processing resources at least cause the cloud printing service to wait for confirmation from the print server that the print job has ended, and delete the printer-specific print streams after a retention period in response to receiving the confirmation.
- In one embodiment, the processing resources at least cause the cloud printing service to transform the printable content and the control data of the print job into the plurality of printer-specific print streams in parallel.
- In one embodiment, the printing system further comprises the print server comprising at least one processor and memory. The processor causes the print server to receive a message from the cloud printing service that the print job is pending, select a printer from the plurality of the printers as a selected printer for printing the print job, and retrieve the one or more of the printer-specific print streams from the cloud printing service. The one or more of the printer-specific print streams retrieved by the print server includes a first printer-specific print stream for the selected printer. The processor causes the print server to schedule the first printer-specific print stream to print at the selected printer.
- In one embodiment, the processor causes the print server to retrieve the first printer-specific print stream from the cloud printing service exclusively in response to selecting the selected printer for printing the print job.
- In one embodiment, the processor causes the print server to retrieve multiple ones of the printer-specific print streams from the cloud printing service for multiple printers of the plurality of the printers determined to be available to print the print job.
- In one embodiment, the processor causes the print server to retrieve a print job package from the cloud printing service that contains each of the printer-specific print streams generated by the cloud printing service.
- In one embodiment, the processor causes the print server to monitor progress of the print job at the selected printer, and select, when an error occurs, another printer from the plurality of the printers as an alternate printer for printing the print job. The one or more of the printer-specific print streams retrieved by the print server includes a second printer-specific print stream for the alternate printer. The processor causes the print server to schedule the second printer-specific print stream to print at the alternate printer.
- In one embodiment, a method of operating a printing system comprises the following steps performed at a cloud printing service: storing device capability information for different types of printers supervised by a print server, receiving a print job, identifying a plurality of the printers that are capable of printing the print job based on the device capability information, and transforming printable content and control data of the print job into a plurality of printer-specific print streams. Each of the printer-specific print streams is in a printable output format for one of the plurality of the printers. The method further comprises providing one or more of the printer-specific print streams from the cloud printing service to the print server.
- In one embodiment, the method further comprises the following steps performed at the cloud printing service: waiting for confirmation from the print server that the print job has ended, and deleting the printer-specific print streams from the cloud printing service after a retention period in response to receiving the confirmation.
- In one embodiment, transforming the printable content and the control data of the print job into the plurality of printer-specific print streams at the cloud printing service comprises transforming the printable content and the control data of the print job into the plurality of printer-specific print streams in parallel.
- In one embodiment, the method further comprises the following steps performed at the print server: receiving a message from the cloud printing service that the print job is pending, selecting a printer from the plurality of the printers as a selected printer for printing the print job, and retrieving the one or more of the printer-specific print streams from the cloud printing service. The one or more of the printer-specific print streams retrieved by the print server includes a first printer-specific print stream for the selected printer. The method further comprises scheduling the first printer-specific print stream to print at the selected printer.
- In one embodiment, retrieving the one or more of the printer-specific print streams from the cloud printing service comprises retrieving the first printer-specific print stream from the cloud printing service exclusively in response to selecting the selected printer for printing the print job.
- In one embodiment, retrieving the one or more of the printer-specific print streams from the cloud printing service comprises retrieving multiple ones of the printer-specific print streams from the cloud printing service for multiple printers of the plurality of the printers determined to be available to print the print job.
- In one embodiment, retrieving the one or more of the printer-specific print streams from the cloud printing service comprises retrieve a print job package from the cloud printing service that contains each of the printer-specific print streams generated by the cloud printing service.
- In one embodiment, the method further comprising the following steps performed at the print server: monitoring progress of the print job at the selected printer, and selecting, when an error occurs, another printer from the plurality of the printers as an alternate printer for printing the print job. The one or more of the printer-specific print streams retrieved by the print server includes a second printer-specific print stream for the alternate printer. The method further comprises scheduling the second printer-specific print stream to print at the alternate printer.
- Other embodiments may include computer readable media, other systems, or other methods as described below.
- The above summary provides a basic understanding of some aspects of the specification. This summary is not an extensive overview of the specification. It is intended to neither identify key or critical elements of the specification nor delineate any scope particular embodiments of the specification, or any scope of the claims. Its sole purpose is to present some concepts of the specification in a simplified form as a prelude to the more detailed description that is presented later.
- Some embodiments of the present disclosure are now described, by way of example only, and with reference to the accompanying drawings. The same reference number represents the same element or the same type of element on all drawings.
-
FIG. 1 illustrates a printing system in an illustrative embodiment. -
FIG. 2 is a block diagram of a cloud printing service in an illustrative embodiment. -
FIG. 3 is a block diagram of a print server in an illustrative embodiment. -
FIG. 4 is a flow chart illustrating a method of operating a print server in combination with a cloud printing service in an illustrative embodiment. -
FIG. 5 is a block diagram of a print server providing device capability information to a cloud printing service in an illustrative embodiment. -
FIG. 6 is a flow chart illustrating a method of providing a cloud printing service in an illustrative embodiment. -
FIG. 7 is a block diagram illustrating a cloud printing service receiving a print job from a user in an illustrative embodiment. -
FIG. 8 is a flow chart illustrating a method of providing printer-specific print streams to a print server in an illustrative embodiment. -
FIG. 9 is a flow chart illustrating a further method of operating a print server in combination with a cloud printing service in an illustrative embodiment. -
FIG. 10 is a flow chart illustrating a further method of operating a print server in combination with a cloud printing service in an illustrative embodiment. -
FIG. 11 illustrates a processing system operable to execute a computer readable medium embodying programmed instructions to perform desired functions in an illustrative embodiment. - The figures and the following description illustrate specific exemplary embodiments. It will thus be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles of the embodiments and are included within the scope of the embodiments. Furthermore, any examples described herein are intended to aid in understanding the principles of the embodiments, and are to be construed as being without limitation to such specifically recited examples and conditions. As a result, the inventive concept(s) is not limited to the specific embodiments or examples described below, but by the claims and their equivalents.
-
FIG. 1 illustrates aprinting system 100 in an illustrative embodiment. In this embodiment,printing system 100 includes acloud printing service 110, aprint server 120, and a plurality of printers 121-123.Print server 120 and printers 121-123 are illustrated in aprint shop 126 of a PSP or the like that provides printing services to users/customers in exchange for monetary compensation. In one embodiment,print shop 126 may be configured to provide commercial and/or industrial printing services, which are referred to herein as production printing services. However,print shop 126 may be configured to provide other types of services in other embodiments. Printers 121-123 are shown as being at the same location in the example ofFIG. 1 , but may be at different locations in other examples. -
Print server 120 is an intermediary between thecloud printing service 110 and printers 121-123.Print server 120 may be considered “on the ground” with printers 121-123 by being directly connected to printers 121-123 via wired or wireless connections. In one embodiment,print server 120 is configured to manage or supervise different types of printers 121-123 that have different specifications. For example, one or more of printers 121-123 may be a production printer (e.g., continuous-feed inkjet printer), desktop printer, 3D printer, plotter or wide-format printer, etc. One or more of printers 121-123 may be from different manufacturers, such as Ricoh, Hewlett-Packard (HP), Konica, Canon, Kyocera, etc., and/or have different hardware, software, operating systems, etc. One or more of printers 121-123 may be configured to print on different types or forms of print media, such as standard weight paper, glossy or matte stock, cut-sheet, continuous-forms, etc. One or more of printers 121-123 may be configured to print on different media sizes, such as letter, legal, A4, extra-large, etc. One or more of printers 121-123 may be configured to print in different colors, such as color or monochrome. One or more of printers 121-123 may be configured with different finishing or post-print options, such as glosses or textures, binding, cutting/trimming, embossing, laminating, etc. - Although not shown in
FIG. 1 , a printer 121-123 generally includes a print controller and one or more print engines. The print controller receives a printer-compliant print stream (e.g., PDL-compliant data), generates rasterized data from the printer-compliant print stream, and transmits the rasterized data to one or more print engines, which mark a print media with the rasterized data. The print engine may use a variety of marking materials for marking a print media, such as ink (e.g., water, solvent, oil, or UV-curable), oil-based paints, additive manufacturing materials, toner, etc. The print media may comprise any type of material upon which ink or another type of marking material is applied, such as paper, plastic, card stock, transparent sheets, a substrate for 3D printing, cloth, etc. -
Print shop 126 may include other printers or other devices not shown inFIG. 1 .Printing system 100 may also include multiple print shops or other entities that utilize the cloud-printing service 110. - Cloud-
printing service 110 is implemented on a cloud-computing platform 112. Cloud-computing allows users access to a variety of services over an internet connection. Some examples of cloud-computing platform 112 may comprise Amazon Web Services (AWS), Google Cloud, Microsoft Azure, etc.Cloud printing service 110 acts as a front-end for a printing service provided by a PSP or the like. At a high level, a user 140 (or customer) is able to submit aprint job 102 to thecloud printing service 110 through ahost device 142, such as a computer, a smartphone, or another device. Thecloud printing service 110 translates theprint job 102 into a plurality of printer-specific print streams that are stored in the cloud.Print server 120 is able to pull or otherwise retrieve a printer-specific print stream for an appropriate printer 121-123 from the cloud, and send the printer-specific print stream to the printer 121-123 to generate printed output. Operation of thecloud printing service 110 and theprint server 120 are described in more detail below. -
Print server 120 is shown inFIG. 1 as being able to communicate with thecloud printing service 110 over theinternet 130. Likewise,host device 142 is shown as being able to communicate with thecloud printing service 110 over theinternet 130. Theinternet 130 as referred to herein is a system of interconnected computer networks that uses the Internet protocol suite (e.g., TCP/IP) to communicate between networks and devices, although other protocols may be developed in the future. -
FIG. 2 is a block diagram of thecloud printing service 110 in an illustrative embodiment. To implement thecloud printing service 110, cloud resources are provisioned in a cloud-computing environment (e.g., AWS), such asprocessing resources 202 and storage resources 204 (although other resources are considered herein). A printing front-end application 206 may be built upon the provisioned resources withinstructions 208, programming, code, etc. In one embodiment, printing front-end application 206 provides adevice capability controller 210, a user interface (I/F) 212, and aprint job converter 214.Device capability controller 210 is configured to managedevice capability information 211 for printers, such as printers 121-123 ofprint shop 126. For example,device capability controller 210 may obtain, collect, or receive device capability (DEVCAP) information 211-1, 211-2, and 211-3 forprinters Device capability information 211 indicates the printer capabilities and/or attributes of a printer. For example, thedevice capability information 211 may include a printer manufacturer, a printer model, a serial number, printer resolution, print engine type (e.g., color or monochrome), printer speed, media types supported, media sizes supported, PDLs supported (e.g., PostScript, Printer Command Languages (PCL), etc.), network protocols supported (e.g., TCP/IP, Line Printer Remote (LPR), Internet Printing Protocol (IPP), Hypertext Transfer Protocol (HTTP), Simple Network Management Protocol (SNMP), etc.), page layouts supported (e.g., N-up), post-print or finishing activities supported (e.g., binding, cutting/trimming, embossing, laminating, etc.), and/or other capabilities or attributes. - User interface 212 is a module of the
cloud printing service 110 that interacts withusers 140, such as to submitprint jobs 102 to thecloud printing service 110. In one embodiment, user interface 212 may comprise a portal 213 that provides auser 140 access to thecloud printing service 110. For example, portal 213 may provide a login page for auser 140, a print tools page that allows a user to upload or submitprint jobs 102 or print files, define control data for print files (e.g., through a default template or custom template), etc., and/or provide any other desired pages for thecloud printing service 110. In other embodiments, user interface 212 may allowusers 140 to submitprint jobs 102 through email, File Transfer Protocol (FTP), or through another means. -
Print job converter 214 is configured to generate a plurality of printer-specific print streams 222 for different printers 121-123 from theprint job 102. Aprint job 102 submitted from auser 140 to thecloud printing service 110 may be considered a “raw” print job, as theprint job 102 cannot be consumed directly by a printer 121-123. Aprint job 102 as described herein includes printable content (e.g., the content of text and/or images that are actually to be printed and seen on a resulting printed page), and control data that describes other attributes of the printing task that is independent of the printable content. The printable content for aprint job 102 may comprise a file or document for printing (e.g., a .pdf document). The control data for aprint job 102 may comprise a job ticket (e.g., Job Definition Format (JDF) job ticket), or other information describing attributes for printing the print job 102 (e.g., media size, number of copies, color or greyscale, resolution, etc.). As will be described in more detail below,print job converter 214 is configured to convert the printable content and control data of aprint job 102 into multiple print streams 222. Aprint stream 222 comprises print data in a printable output format or a device-specific format that a printer 121-123 consumes directly to print content on print media. In other words,print job converter 214 is configured to convert the printable content and control data of aprint job 102 into multiple PDL-compliant print streams for the different printers 121-123. A PDL-compliant print stream contains the printable content and control data of aprint job 102 that is formatted according to the PDL interpretable or understood by a printer 121-123. Thus,print job converter 214 may act as the last stage in creating or formatting a PDL-compliant print stream for a printer. - Each
print stream 222 generated byprint job converter 214 from theprint job 102 is specific to a candidate printer for printing theprint job 102. For example, assume that printers 121-123 are candidates for printing aprint job 102. In this example, print stream 222-1 may be specific forprinter 121, print stream 222-2 may be specific forprinter 122, and print stream 222-3 may be specific forprinter 123. Each printer 121-123 requires adifferent print stream 222 for printing theprint job 102, such as based on a PDL used at the printer 121-123, specification or attributes of the printer 121-123, etc. Thus,print job converter 214 transforms the printable content and control data of aprint job 102 intodifferent print streams 222 for the different printers 121-123. A collection of the printer-specific print streams 222 is referred to as aprint job package 220 that is stored by printing front-end application 206. -
FIG. 3 is a block diagram ofprint server 120 in an illustrative embodiment. In this embodiment,print server 120 includes the following subsystems: aninterface component 302, a device capabilities controller 304, and aprint manager 306.Interface component 302 is a hardware component or circuitry that communicates with external device, systems, or entities, such as printers 121-123 and the printing front-end application 206. For example,interface component 302 may exchange communications with printers 121-123 based on a native protocol of the printers 121-123.Interface component 302 may also exchange communications with the printing front-end application 206 over anetwork connection 132 via theinternet 130, such as messages, data (e.g., print streams), Application Programming Interface (API) calls, etc.Interface component 302 may use a variety of protocols for communication. - Device capabilities controller 304 comprises circuitry, logic, hardware, means, etc., configured to acquire
device capability information 211 for printers 121-123 and/or other devices. For example, device capabilities controller 304 may query printers 121-123 to acquiredevice capability information 211, may receive input regarding the device capability information 211 (e.g., from an operator, from a manufacturer, etc.), or otherwise acquire thedevice capability information 211. Device capabilities controller 304 is further configured to interact with printing front-end application 206 to provide thedevice capability information 211 to printing front-end application 206. -
Print manager 306 comprises circuitry, logic, hardware, means, etc., configured to supervise or manage a plurality of printers 121-123 and printing processes performed by the printers 121-123. In one embodiment,print manager 306 includes ascheduler 308 and ajob spool 310.Job spool 310 comprises a memory configured to temporarily store or queue print streams forprint jobs 102 received atprint server 120.Scheduler 308 is configured to schedule the print streams fromjob spool 310 at one or more of printers 121-123. - One or more of the subsystems of
print server 120 may be implemented on a hardware platform comprised of analog and/or digital circuitry. One or more of the subsystems ofprint server 120 may be implemented on aprocessor 330 that executesinstructions 334 stored inmemory 332. Aprocessor 330 comprises an integrated hardware circuit configured to executeinstructions 334 to provide the functions ofprint server 120.Processor 330 may comprise a set of one or more processors or may comprise a multi-processor core, depending on the particular implementation.Memory 332 is a non-transitory computer readable medium for data, instructions, applications, etc., and is accessible byprocessor 330.Memory 332 is a hardware storage device capable of storing information on a temporary basis and/or a permanent basis.Memory 332 may comprise a random-access memory, or any other volatile or non-volatile storage device. -
FIG. 4 is a flow chart illustrating amethod 400 of operatingprint server 120 in combination with acloud printing service 110 in an illustrative embodiment. The steps ofmethod 400 will be described with reference toprint server 120 inFIG. 3 , but those skilled in the art will appreciate thatmethod 400 may be performed in other systems or devices. Also, the steps of the flow charts described herein are not all inclusive and may include other steps not shown, and the steps may be performed in an alternative order. - Device capabilities controller 304 of
print server 120 obtains, receives, or collectsdevice capability information 211 for printers 121-123 (step 402). Device capabilities controller 304 may collect thedevice capability information 211 in a variety of ways. In one embodiment, device capabilities controller 304 may communicate with the printers 121-123 to request thedevice capability information 211, such as throughinterface component 302. For example, device capabilities controller 304 may use Job Messaging Format (JMF), SNMP, or another protocol to query printers 121-123 for thedevice capability information 211, printer status (e.g., availability, toner/ink levels, number of pages printed, etc.), and/or other information. In one embodiment, an operator ofprint shop 126 or another user may enter thedevice capability information 211 into device capabilities controller 304, such as through a Graphical User Interface (GUI). In one embodiment, device capabilities controller 304 may obtain thedevice capability information 211 from a manufacturer of the printer 121-123 or another entity. Device capabilities controller 304 may collect thedevice capability information 211 in these and/or other ways to build a capability profile for each of the printers 121-123. - Device capabilities controller 304 transmits, uploads, or provides the
device capability information 211 to the cloud printing service 110 (step 404). For example,interface component 302 may establish anetwork connection 132 with thecloud printing service 110 over theinternet 130, and device capabilities controller 304 may transmit thedevice capability information 211 to thecloud printing service 110 over thenetwork connection 132. Device capabilities controller 304 may transmit thedevice capability information 211 as a batch for printers 121-123, or may transmit thedevice capability information 211 individually for printers 121-123.FIG. 5 is a block diagram ofprint server 120 providing thedevice capability information 211 to thecloud printing service 110 in an illustrative embodiment. Although the above describesdevice capability information 211 for printers 121-123, it is understood that thedevice capability information 211 may be for any type of device inprint shop 126, such as pre-print devices or finishing devices associated with printers 121-123. -
FIG. 6 is a flow chart illustrating amethod 600 of providing acloud printing service 110 in an illustrative embodiment. The steps ofmethod 600 will be described with reference to printing front-end application 206 inFIG. 2 , but those skilled in the art will appreciate thatmethod 600 may be performed in other applications or systems on a cloud-computing platform. -
Device capabilities controller 210 of printing front-end application 206 storesdevice capability information 211 for printers 121-123 (step 602), such as received fromprint server 120. Because printers 121-123 are of different types, thedevice capability information 211 for each printer 121-123 may be distinct.Device capabilities controller 210 may store thedevice capability information 211 in a profile or device capability file for each of the printers 121-123 and/or other devices ofprint shop 126.Device capabilities controller 210 may also manage or update thedevice capability information 211 as needed by contactingprint server 120 and requesting any desired updates.Device capabilities controller 210 may also make thedevice capability information 211 available to user interface 212 for use in a print tools page or the like, where auser 140 is able to select a particular printer 121-123 for aprint job 102. - Through user interface 212 provided by printing front-
end application 206, auser 140 is able to access thecloud printing service 110 to request a printing process for aprint job 102. For example, user interface 212 (through portal 213) may provide a print tools page or the like to theuser 140 in accessing thecloud printing service 110. Theuser 140 may provide a file or document (or multiple files or documents) for aprint job 102, such as by uploading the file, specifying a path on a local computer or a Uniform Resource Locator (URL) for the file, etc. Theuser 140 may also specify control data for theprint job 102. For example, theuser 140 may provide a job ticket (e.g., a JDF job ticket) that describes attributes for theprint job 102. The job ticket may include job settings or a job description for any pre-print, print, post-print, and/or delivery of the print job. User interface 212 may also allow theuser 140 to enter one or more attributes for theprint job 102 into the print tools page or the like. - Thus, user interface 212 receives a print job 102 (step 604), such as from
user 140.FIG. 7 is a block diagram illustrating thecloud printing service 110 receiving aprint job 102 from auser 140 in an illustrative embodiment.Print job 102, as received by thecloud printing service 110, includes printable content 704 (e.g., a file or document) andcontrol data 706. Theprintable content 704 is independent from a printer and is not formatted according to a PDL for a printer (i.e., non-PDL-compliant), which means theprintable content 704 is not directly consumable by a printer. Thecontrol data 706 may also be considered as a separate “package” from theprintable content 704, such as a job ticket. - In response to receiving the
print job 102 inFIG. 6 ,print job converter 214 of printing front-end application 206 identifies printers 121-123 that are capable of printing theprint job 102 based on the device capability information 211 (step 606).Print job converter 214 may process thecontrol data 706 for theprint job 102, and determine which printers 121-123 (also referred to as candidate printers) are capable of and/or configured to print theprint job 102 based on thedevice capability information 211 specified for each printer 121-123. For example, if thecontrol data 706 for theprint job 102 specifies color printing, then printjob converter 214 determines which of printers 121-123 are capable of printing in color based on thedevice capability information 211. If thecontrol data 706 for theprint job 102 specifies printing on high-gloss stock, then printjob converter 214 determines which of printers 121-123 are loaded with high-gloss stock based on thedevice capability information 211.Print job converter 214 may identify a single printer 121-123 that is capable of printing theprint job 102, but it is assumed for this embodiment that multiple printers 121-123 are capable of printing theprint job 102. It is also assumed thatprint job converter 214 identifies printers 121-123 of different types that have different specifications. -
Print job converter 214 transforms or converts theprintable content 704 andcontrol data 706 of theprint job 102 into a plurality of printer-specific print streams 222 (step 608). As described above, a printer-specific print stream 222 comprises print data in a printable output format or a device-specific format for a specific printer that the printer consumes directly. For example, whenprinter 121 is capable of printing theprint job 102,print job converter 214 transforms theprintable content 704 andcontrol data 706 of theprint job 102 into a printer-specific print stream 222-1 for printer 121 (see also,FIG. 2 ). Likewise, whenprinter 122 andprinter 123 are capable of printing theprint job 102,print job converter 214 transforms theprintable content 704 andcontrol data 706 of theprint job 102 into a printer-specific print stream 222-2 forprinter 122 and a printer-specific print stream 222-3 forprinter 123. The printer-specific print streams 222 may also be referred to as PDL-compliant print streams for specific printers 121-123.Print job converter 214 may process thedevice capability information 211 for a printer 121-123 to determine which printable output format or a device-specific format is used for that printer 121-123, and transform theprintable content 704 andcontrol data 706 accordingly. -
Print job converter 214 may haveprocessing resources 202 andstorage resources 204 available to transform theprintable content 704 andcontrol data 706 of theprint job 102 into the printer-specific print streams 222 in parallel (optional step 620). In other words,print job converter 214 may generate the printer-specific print streams 222 simultaneously from theprintable content 704 andcontrol data 706. - Printers 121-123 of different types are configured to receive a
print stream 222 in a different printable output format. For example, printers 121-123 from different manufacturers may use different printable output formats. In another example, different models of printers 121-123 from the same manufacturer may use different printable output formats. Thus,print job converter 214 creates a printer-specific print stream 222 for each of the candidate printers 121-123 based on the printable output formats for those candidate printers 121-123.Print job converter 214 stores the printer-specific print streams 222 in a storage location (e.g., storage resources 204) as aprint job package 220 that is available to printserver 120.Print job converter 214 may also store metadata for the printer-specific print streams 222, such as printer identifiers (IDs) for the printers 121-123 that are mapped to the printer-specific print streams 222. - In
FIG. 6 ,print job converter 214 provides one or more of the printer-specific print streams 222 to print server 120 (step 610). In other words,print job converter 214 makes the printer-specific print streams 222 available to printserver 120 for use in printing theprint job 102. For example,print job converter 214 may provide a path (e.g., URL) to the printer-specific print streams 222 at a storage location, may store the printer-specific print streams 222 in a shared storage location, may transmit the printer-specific print streams 222 to theprint server 120 over thenetwork connection 132, etc.Print job converter 214 then waits for confirmation that theprint job 102 has ended (step 612). - Although
print job converter 214 may provide the printer-specific print stream(s) 222 toprint server 120 in a variety of ways, one way is for theprint server 120 to pull the printer-specific print stream(s) 222 from thecloud printing service 110.FIG. 8 is a flow chart illustrating amethod 800 of providing printer-specific print streams 222 toprint server 120 in an illustrative embodiment. In this embodiment,print job converter 214 may set up or establish a network connection 132 (e.g., secure network connection) withprint server 120 over the internet 130 (step 802), if not already established.Print job converter 214 transmits a notification or message to printserver 120 indicating that aprint job 102 is pending (step 804). In one embodiment,print job converter 214 may transmit the message to theprint server 120 over thenetwork connection 132. In other embodiments,print job converter 214 may send an email with the message, or may otherwise notifyprint server 120 of the pendingprint job 102. The message fromprint job converter 214 may include metadata for theprint job 102, such as a customer ID for theuser 140 submitting theprint job 102, a job ID or name for theprint job 102, a list of printers 121-123 that are capable of printing theprint job 102, and/or other information. The metadata for theprint job 102 may include a reference to theprint job package 220 and/or printer-specific print streams 222 generated for theprint job 102, such as storage location (e.g., URL) where theprint job package 220 and/or printer-specific print streams 222 are stored. The metadata for theprint job 102 may indicate a primary printer 121-123 for printing theprint job 102, a secondary or alternate printer 121-123, etc. -
FIG. 9 is a flow chart illustrating afurther method 900 of operatingprint server 120 in combination with acloud printing service 110 in an illustrative embodiment. InFIG. 9 ,print manager 306 ofprint server 120 receives the message or notification from thecloud printing service 110 that aprint job 102 is pending (step 902).Print manager 306 selects a printer 121-123 for printing the print job 102 (step 904). In selecting the printer 121-123 for theprint job 102,print manager 306 may determine which printers 121-123 are capable of and/or configured to print theprint job 102, determine the availability of printers 121-123 for printing theprint job 102, and select one (or more) of the printers 121-123 based on capability and availability. For example,print manager 306 may query device capabilities controller 304 to determine capability, may poll printers 121-123 to determine availability or printer status, may process an internal queue or the like to determine availability, etc.Print manager 306 may determine which of the printers 121-123 are capable of printing theprint job 102 based on the metadate for theprint job 102 provided by thecloud printing service 110. It is noted thatprint manager 306 may select multiple printers 121-123 for printing theprint job 102. - With
network connection 132 established,print manager 306 retrieves, requests, or obtains one or more of the printer-specific print streams 222 for theprint job 102 from the cloud printing service 110 (step 906).Print manager 306 may retrieve one, several, or all of the printer-specific print streams 222 in theprint job package 220 from thecloud printing service 110 over thenetwork connection 132. In one embodiment,print manager 306 may select a single one of the printers 121-123 for printing theprint job 102. In response to selecting a single printer 121-123,print manager 306 may retrieve the printer-specific print stream 222 (e.g., a first printer-specific print stream) from thecloud printing service 110 exclusively for the selected printer 121-123 (optional step 910). This may be beneficial as the only the printer-specific print stream 222 for the selected printer 121-123 is sent over thenetwork connection 132. In one embodiment,print manager 306 may determine that multiple printers 121-123 are available for printing theprint job 102, and retrieve the printer-specific print streams 222 from thecloud printing service 110 for the multiple printers 121-123 determined to be available (optional step 912). This may be beneficial when printing duties will be shared among multiple printers 121-123, whenprint manager 306 has identified a primary and alternate printer 121-123, etc. In one embodiment,print manager 306 may retrieve theprint job package 220 from thecloud printing service 110 that contains each of the printer-specific print streams 222 generated by the cloud printing service 110 (optional step 914). This may be beneficial as theprint server 120 will receive the printer-specific print streams 222 for each of the printers 121-123, and can dynamically select which printer(s) 121-123 to use or may switch between printers 121-123, such as in response to a print error on one of the printers 121-123 (e.g., out of paper, toner, or ink, paper jam, etc.). - After retrieving one or more of the printer-
specific print streams 222 from thecloud printing service 110,print manager 306 may store the printer-specific print stream(s) 222 inmemory 332. Print manager 306 (through scheduler 308) schedules a printer-specific print stream 222 for theprint job 102 at the selected printer 121-123 (step 908). For example,print manager 306 may select a first printer (e.g., printer 121) for the print job 102 (if not already selected), and schedule the first printer-specific print stream 222 for theprint job 102 at thefirst printer 121. According to the schedule for the selected printer 121-123,print manager 306 submits, delivers, or transfers the printer-specific print stream 222 for theprint job 102 to the selected printer 121-123. Because the printer-specific print stream 222 is in the appropriate format, the selected printer 121-123 is able to directly print the printer-specific print stream 222 and generate print output for theprint job 102. It is noted thatprint manager 306 may schedule different printer-specific print streams 222 for theprint job 102 on different printers 121-123 as desired, such as to print different portions of theprint job 102. -
FIG. 10 is a flow chart illustrating afurther method 1000 of operatingprint server 120 in combination with acloud printing service 110 in an illustrative embodiment. After scheduling the printer-specific print stream 222 to a selected printer 121-123,print manager 306 monitors the progress of theprint job 102 at the selected printer 121-123 (step 1002). When an error occurs in printing theprint job 102 at the selected printer 121-123,print manager 306 may select an alternate or substitute printer 121-123 for the print job 102 (step 1004) or identify a printer 121-123 previously-selected as an alternate.Print manager 306 retrieves or obtains the printer-specific print stream 222 (e.g., second printer-specific print stream) for the alternate printer 121-123. For example,print manager 306 may retrieve the printer-specific print stream 222 for the alternate printer 121-123 from thecloud printing service 110 over thenetwork connection 132. If the printer-specific print stream 222 for the alternate printer 121-123 was already retrieved from thecloud printing service 110,print manager 306 may retrieve the printer-specific print stream 222 for the alternate printer 121-123 from local memory (e.g., memory 332). Print manager 306 (through scheduler 308) schedules the printer-specific print stream 222 for theprint job 102 at the alternate printer 121-123 (step 1006). - When the
print job 102 has finished or ended (e.g., printing has completed),print manager 306 deletes the printer-specific print stream(s) 222 for theprint job 102 from memory 332 (step 1008).Print manager 306 also transmits a status message to thecloud printing service 110 indicating that theprint job 102 has ended (step 1010), such as over thenetwork connection 132. The status message may further include audit information (e.g., amount of paper used, amount of ink used etc.) or other information. InFIG. 6 , whenprint job converter 214 receives a status message confirming that theprint job 102 has ended,print job converter 214 deletes the printer-specific print stream(s) 222 for theprint job 102 after a retention period (step 614).Print job converter 214 orprint server 120 may then tear down thenetwork connection 132. - One technical benefit of the
cloud printing service 110 as discussed above is the process of transforming theprintable content 704 andcontrol data 706 of aprint job 102 into a printer-specific print stream 222 is decoupled from aprint server 120 that manages a plurality of printers 121-123. Aprint server 120 has limited processing and memory resources whereas a cloud-computing platform 112 is “serverless” and can spin up additional resources as needed for processing. Thecloud printing service 110 can convert theprintable content 704 andcontrol data 706 of theprint job 102 into a plurality of printer-specific print streams 222 in parallel, and make the printer-specific print streams 222 available to theprint server 120 for use as needed at individual printers 121-123. Theprint server 120 may therefore be lightweight without any printer drivers, if desired. - Embodiments disclosed herein can take the form of software, hardware, firmware, or various combinations thereof.
FIG. 11 illustrates aprocessing system 1100 operable to execute a computer readable medium embodying programmed instructions to perform desired functions in an illustrative embodiment.Processing system 1100 is operable to perform the above operations by executing programmed instructions tangibly embodied on computerreadable storage medium 1112. In this regard, embodiments can take the form of a computer program accessible via computer-readable medium 1112 providing program code for use by a computer or any other instruction execution system. For the purposes of this description, computerreadable storage medium 1112 can be anything that can contain or store the program for use by the computer. - Computer
readable storage medium 1112 can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor device. Examples of computerreadable storage medium 1112 include a solid-state memory, a magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W), and DVD. -
Processing system 1100, being suitable for storing and/or executing the program code, includes at least oneprocessor 1102 coupled to program and data memory 1104 through a system bus 1150. Program and data memory 1104 can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code and/or data in order to reduce the number of times the code and/or data are retrieved from bulk storage during execution. - Input/output or I/O devices 1106 (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled either directly or through intervening I/O controllers.
Network adapter interfaces 1108 may also be integrated with the system to enableprocessing system 1100 to become coupled to other data processing systems or storage devices through intervening private or public networks. Modems, cable modems, IBM Channel attachments, SCSI, Fibre Channel, and Ethernet cards are just a few of the currently available types of network or host interface adapters.Display device interface 1110 may be integrated with the system to interface to one or more display devices, such as printing systems and screens for presentation of data generated byprocessor 1102. - Although specific embodiments were described herein, the scope of the invention is not limited to those specific embodiments. The scope of the invention is defined by the following claims and any equivalents thereof.
Claims (20)
1. A printing system, comprising:
processing resources and storage resources provisioned on a cloud-computing platform to implement a cloud printing service, the processing resources at least cause the cloud printing service to:
store device capability information for different types of printers supervised by a print server;
receive a print job comprising printable content and control data;
identify a plurality of the printers capable of printing the print job based on the device capability information;
transform the printable content and the control data of the print job into a plurality of printer-specific print streams each in a printable output format for a different one of the plurality of the printers;
store the printer-specific print streams in the storage resources of the cloud-computing platform; and
provide one or more of the printer-specific print streams to the print server.
2. The printing system of claim 1 , wherein the processing resources at least cause the cloud printing service to:
wait for confirmation from the print server that the print job has ended; and
delete the printer-specific print streams after a retention period in response to receiving the confirmation.
3. The printing system of claim 1 , wherein the processing resources at least cause the cloud printing service to:
transform the printable content and the control data of the print job into the plurality of printer-specific print streams in parallel.
4. The printing system of claim 1 , further comprising:
the print server comprising at least one processor and memory;
the at least one processor causes the print server to:
receive a message from the cloud printing service that the print job is pending;
select a printer from the plurality of the printers as a selected printer for printing the print job;
retrieve the one or more of the printer-specific print streams from the cloud printing service, wherein the one or more of the printer-specific print streams retrieved by the print server includes a first printer-specific print stream for the selected printer; and
schedule the first printer-specific print stream to print at the selected printer.
5. The printing system of claim 4 , wherein the at least one processor causes the print server to:
retrieve the first printer-specific print stream from the cloud printing service exclusively in response to selecting the selected printer for printing the print job.
6. The printing system of claim 4 , wherein the at least one processor causes the print server to:
retrieve multiple ones of the printer-specific print streams from the cloud printing service for multiple printers of the plurality of the printers determined to be available to print the print job.
7. The printing system of claim 4 , wherein the at least one processor causes the print server to:
retrieve a print job package from the cloud printing service that contains each of the printer-specific print streams generated by the cloud printing service.
8. The printing system of claim 4 , wherein the at least one processor causes the print server to:
monitor progress of the print job at the selected printer;
select, when an error occurs, another printer from the plurality of the printers as an alternate printer for printing the print job, wherein the one or more of the printer-specific print streams retrieved by the print server includes a second printer-specific print stream for the alternate printer; and
schedule the second printer-specific print stream to print at the alternate printer.
9. A method comprising:
storing, at a cloud printing service implemented on a cloud-computing platform, device capability information for different types of printers supervised by a print server;
receiving, at the cloud printing service, a print job comprising printable content and control data;
identifying, at the cloud printing service, a plurality of the printers capable of printing the print job based on the device capability information;
transforming, at the cloud printing service, the printable content and the control data of the print job into a plurality of printer-specific print streams each in a printable output format for a different one of the plurality of the printers;
storing the printer-specific print streams in storage resources of the cloud-computing platform; and
providing one or more of the printer-specific print streams from the cloud printing service to the print server.
10. The method of claim 9 , further comprising:
waiting, at the cloud printing service, for confirmation from the print server that the print job has ended; and
deleting the printer-specific print streams from the cloud printing service after a retention period in response to receiving the confirmation.
11. The method of claim 9 , wherein transforming the printable content and the control data of the print job into the plurality of printer-specific print streams comprises:
transforming the printable content and the control data of the print job into the plurality of printer-specific print streams in parallel.
12. The method of claim 9 , further comprising:
receiving, at the print server, a message from the cloud printing service that the print job is pending;
selecting, at the print server, a printer from the plurality of the printers as a selected printer for printing the print job;
retrieving, at the print server, the one or more of the printer-specific print streams from the cloud printing service, wherein the one or more of the printer-specific print streams retrieved by the print server includes a first printer-specific print stream for the selected printer; and
scheduling, at the print server, the first printer-specific print stream to print at the selected printer.
13. The method of claim 12 , wherein retrieving the one or more of the printer-specific print streams from the cloud printing service comprises:
retrieving the first printer-specific print stream from the cloud printing service exclusively in response to selecting the selected printer for printing the print job.
14. The method of claim 12 , wherein retrieving the one or more of the printer-specific print streams from the cloud printing service comprises:
retrieving multiple ones of the printer-specific print streams from the cloud printing service for multiple printers of the plurality of the printers determined to be available to print the print job.
15. The method of claim 12 , wherein retrieving the one or more of the printer-specific print streams from the cloud printing service comprises:
retrieving a print job package from the cloud printing service that contains each of the printer-specific print streams generated by the cloud printing service.
16. The method of claim 12 , further comprising:
monitoring, at the print server, progress of the print job at the selected printer;
selecting, when an error occurs, another printer from the plurality of the printers as an alternate printer for printing the print job, wherein the one or more of the printer-specific print streams retrieved by the print server includes a second printer-specific print stream for the alternate printer; and
scheduling the second printer-specific print stream to print at the alternate printer.
17. A non-transitory computer readable medium embodying programmed instructions executed by a processor, wherein the instructions direct the processor to implement a method of operating a printing system, the method comprising:
storing, at a cloud printing service implemented on a cloud-computing platform, device capability information for different types of printers supervised by a print server;
receiving, at the cloud printing service, a print job comprising printable content and control data;
identifying, at the cloud printing service, a plurality of the printers capable of printing the print job based on the device capability information;
transforming, at the cloud printing service, the printable content and the control data of the print job into a plurality of printer-specific print streams each in a printable output format for a different one of the plurality of the printers;
storing the printer-specific print streams in storage resources of the cloud-computing platform; and
providing one or more of the printer-specific print streams from the cloud printing service to the print server.
18. The computer readable medium of claim 17 , wherein the method further comprises:
waiting, at the cloud printing service, for confirmation from the print server that the print job has ended; and
deleting the printer-specific print streams from the cloud printing service after a retention period in response to receiving the confirmation.
19. The computer readable medium of claim 17 , wherein the method further comprises:
receiving, at the print server, a message from the cloud printing service that the print job is pending;
selecting, at the print server, a printer from the plurality of the printers as a selected printer for printing the print job;
retrieving, at the print server, the one or more of the printer-specific print streams from the cloud printing service, wherein the one or more of the printer-specific print streams retrieved by the print server includes a first printer-specific print stream for the selected printer; and
scheduling, at the print server, the first printer-specific print stream to print at the selected printer.
20. The computer readable medium of claim 19 , wherein the method further comprises:
monitoring, at the print server, progress of the print job at the selected printer;
selecting, when an error occurs, another printer from the plurality of the printers as an alternate printer for printing the print job, wherein the one or more of the printer-specific print streams retrieved by the print server includes a second printer-specific print stream for the alternate printer; and
scheduling the second printer-specific print stream to print at the alternate printer.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/706,197 US11789681B1 (en) | 2022-03-28 | 2022-03-28 | Cloud printing services for printing to different types of printers |
US18/244,706 US12008278B2 (en) | 2022-03-28 | 2023-09-11 | Cloud printing services for printing to different types of printers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/706,197 US11789681B1 (en) | 2022-03-28 | 2022-03-28 | Cloud printing services for printing to different types of printers |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/244,706 Continuation US12008278B2 (en) | 2022-03-28 | 2023-09-11 | Cloud printing services for printing to different types of printers |
Publications (2)
Publication Number | Publication Date |
---|---|
US20230305778A1 true US20230305778A1 (en) | 2023-09-28 |
US11789681B1 US11789681B1 (en) | 2023-10-17 |
Family
ID=88095811
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/706,197 Active US11789681B1 (en) | 2022-03-28 | 2022-03-28 | Cloud printing services for printing to different types of printers |
US18/244,706 Active US12008278B2 (en) | 2022-03-28 | 2023-09-11 | Cloud printing services for printing to different types of printers |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/244,706 Active US12008278B2 (en) | 2022-03-28 | 2023-09-11 | Cloud printing services for printing to different types of printers |
Country Status (1)
Country | Link |
---|---|
US (2) | US11789681B1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1006431A1 (en) * | 1998-12-02 | 2000-06-07 | Xerox Corporation | Printing system and method |
US20020097424A1 (en) * | 2001-01-11 | 2002-07-25 | Sharp Laboratories Of America, Inc. | Methods and systems for print system component-based remote printing |
US20070035763A1 (en) * | 2005-08-09 | 2007-02-15 | Globalprint Systems, Inc. | Print job management method and system |
US20100171973A1 (en) * | 2009-01-06 | 2010-07-08 | Canon Kabushiki Kaisha | Print system, print server, control method thereof, and program |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7880912B2 (en) | 2005-12-07 | 2011-02-01 | Xerox Corporation | Network printing system having automated selection of a destination printer |
US7872765B2 (en) | 2006-02-23 | 2011-01-18 | Ricoh Company, Ltd. | Non-postscript printer description file generating tool |
JP5854654B2 (en) | 2010-09-30 | 2016-02-09 | キヤノン株式会社 | Printing system, printing method, print server, control method, and program |
US9582225B2 (en) * | 2015-03-27 | 2017-02-28 | Kyocera Document Solutions Inc. | Document solution management platform in a decentralized environment |
CN110908621A (en) | 2019-11-22 | 2020-03-24 | 深圳市印点点科技有限公司 | Cloud platform printing method, cloud server and cloud printing system |
CN113190187A (en) | 2021-04-28 | 2021-07-30 | 杭州和利时自动化有限公司 | Printing method, printing device, electronic equipment and computer readable storage medium |
CN113282255A (en) | 2021-06-08 | 2021-08-20 | 深圳市逸宏安科技有限公司 | Method and system for directly printing label under B/S architecture |
-
2022
- 2022-03-28 US US17/706,197 patent/US11789681B1/en active Active
-
2023
- 2023-09-11 US US18/244,706 patent/US12008278B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1006431A1 (en) * | 1998-12-02 | 2000-06-07 | Xerox Corporation | Printing system and method |
US20020097424A1 (en) * | 2001-01-11 | 2002-07-25 | Sharp Laboratories Of America, Inc. | Methods and systems for print system component-based remote printing |
US20070035763A1 (en) * | 2005-08-09 | 2007-02-15 | Globalprint Systems, Inc. | Print job management method and system |
US20100171973A1 (en) * | 2009-01-06 | 2010-07-08 | Canon Kabushiki Kaisha | Print system, print server, control method thereof, and program |
Also Published As
Publication number | Publication date |
---|---|
US11789681B1 (en) | 2023-10-17 |
US12008278B2 (en) | 2024-06-11 |
US20240126491A1 (en) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4968931B2 (en) | Information processing apparatus, information processing method, and program | |
EP1865409B1 (en) | Information processing apparatus, print controlling method, and computer-readable storage medium | |
US8861010B2 (en) | Notifying a print client of an end of an image process on print data | |
US7936469B2 (en) | System and method for distributed printer processing | |
EP2492794A2 (en) | Multiple print protocol capability of a virtual printer in a print shop architecture | |
EP2492802A2 (en) | Establishing job ticket values of a print job in a print shop architecture | |
US9507789B2 (en) | System, relay server apparatus, information processing method and computer-readable medium | |
US20110019226A1 (en) | Server, printer, and computer readable medium | |
JP5982862B2 (en) | Protocol Override for Capability Presentation in Print Shop Architecture | |
US9311036B2 (en) | Data processing system and method of data processing | |
JP2005271264A (en) | Printing namaging device, method, program, storage medium and printing system | |
EP2506137A2 (en) | Template-based installation of workflow systems in a print shop environment | |
JP2013073369A (en) | Print control system, print control method, image processor and print control program | |
US9197765B2 (en) | Management apparatus, management method, and program | |
US11204728B2 (en) | Print job modification in a print shop environment | |
US20120194852A1 (en) | Method of managing plural print jobs by using a print job group list | |
US11789681B1 (en) | Cloud printing services for printing to different types of printers | |
US8693022B2 (en) | Distributed print processing | |
JP2009123075A (en) | Print controller, print control method, and storage medium | |
US8477354B2 (en) | Providing print operations to virtually any client regardless of the computing environment of the client | |
JP2022040993A (en) | Information processing apparatus, control method, and program | |
US20240281176A1 (en) | Information processing apparatus, control method of information processing apparatus, and non-transitory computer-readable storage medium | |
JP2015001829A (en) | Printing system, information processor and control method thereof, and program | |
JP2005271370A (en) | Printing managing device, printing managing method, printing managing program and printing managing system | |
US11200016B2 (en) | Print data control apparatus to instruct another printing apparatus at transmission destination to perform desired process, printing apparatus thereof, and printing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: RICOH COMPANY, LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WALLER, MARQUIS G.;BOLDT, GERALD DONALD;YAMASAKI, TADAO;AND OTHERS;SIGNING DATES FROM 20220222 TO 20220223;REEL/FRAME:059417/0013 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |