Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
RENDERING OF PRINT JOBS
Document Type and Number:
WIPO Patent Application WO/2015/113626
Kind Code:
A1
Abstract:
Techniques to render print jobs are disclosed. A print job is to be performed at a target printer in a network, which target printer includes a render engine. It is determined whether a rendering workload of the target render engine exceeds a selected workload threshold. Upon determining that the rendering workload exceeds a selected workload threshold, at least a portion of the print job is sent for rendering to an available render engine of a printer in the network. Printer ready data is then provided to the target printer to print the print job. The printer ready data corresponds to the at least a portion of the print job rendered by the available render engine.

Inventors:
CRESPI SERRANO ALBERT (ES)
BORRELL AVILA ORIOL (ES)
CIURANETA SANCHEZ CARLOS (ES)
SERRA MONNER ALBERT (ES)
ZUZA IRURUETA MIKEL (ES)
Application Number:
PCT/EP2014/051940
Publication Date:
August 06, 2015
Filing Date:
January 31, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO (US)
CRESPI SERRANO ALBERT (ES)
BORRELL AVILA ORIOL (ES)
CIURANETA SANCHEZ CARLOS (ES)
SERRA MONNER ALBERT (ES)
ZUZA IRURUETA MIKEL (ES)
International Classes:
G06F3/12; G06K15/02
Foreign References:
US20060072148A12006-04-06
US20070070376A12007-03-29
Other References:
None
Attorney, Agent or Firm:
FRANKS, Adam (5 avenue Raymond Chanas, GRENOBLE Cedex 09, FR)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A computer software product, comprising a tangible medium readable by a processor, the medium having stored thereon a set of instructions for performing a print job at a target printer in a network, the target printer including a render engine, the instructions comprising: a set of instructions which, when loaded into a memory and executed by the processor, causes determining whether a rendering workload of the target render engine exceeds a selected workload threshold; a set of instructions which, when loaded into the memory and executed by the processor, causes, upon determining that the rendering workload exceeds the selected workload threshold, sending for rendering at least a portion of the print job to an available render engine of a printer in the network; a set of instructions which, when loaded into the memory and executed by the processor, causes providing printer ready data to the target printer to print the print job, the printer ready data corresponding to the at least a portion of the print job rendered by the available render engine.

2. The product of claim 1 , wherein the sending includes searching for a printer in the network that is indicated as available for rendering.

3. The product of claim 1, wherein a set of instructions which, when loaded into a memory and executed by the processor, causes the target printer to maintain a list of printers in the network with available render engines.

4. The product of claim 1, wherein the print job is completely rendered by the available render engine.

5. The product of claim 1, wherein the print job is rendered in parallel by a plurality of render engines of printers in the network.

6. A system to print a specific print job, the system comprising: a target render engine to render print jobs, the rendering of print jobs causing a rendering workload; a network engine to cause rendering of at least a portion of the specific print job at an available render engine of a networked printer when a rendering workload of the target render engine exceeds a selected workload threshold; and a printer engine to cause printing the print job using at least a portion of the print job rendered at the available render engine.

7. The system of claim 6, wherein the network engine is to access a list of available render engines in a network common to the system to determine the available render engine to render the print job.

8. The system of claim 6, wherein the specific print job is rendered by a plurality of available render engines of printers networked to the system.

9. The system of claim 8, further comprising a load balancing server to selectively transmit information relating to the print job to a plurality of available render engines of networked printers to reproduce the print job.

10. The system of claim 6, wherein the system is a commercial printer.

11. A method to render a print job in a network of printers, at least some of the printers in the network including a render engine, the print job to be printed by a target printer of the printer network, the method, comprising: receiving a notification that a printer of the network is available to render the print job; actualizing a list of printers available to render the print job based on the notification; determining whether the print job can be rendered at the target printer without causing a significant time delay to reproduce the print job; upon determining that the print job cannot be rendered at the target printer without causing a significant time delay, sending the print job for rendering to one or more of the printers in the list of available printers so as to generate print ready data; and redirecting the generated print ready data to the target printer.

12. The method of claim 11, wherein the available render engine corresponds to a malfunctioning printer non-capable of printing a print job.

13. The method of claim 11, wherein the available render engine corresponds to an idle networked printer.

14. The method of claim 11 wherein, upon determining that the print job cannot be rendered at the target printer without causing a significant time delay, the print job is selectively distributed to a plurality of render engines of printers in the network for generating the print ready data.

15. The product of claim 14, wherein the selective distribution is performed based upon the workload of the render engines so as to improve rendering time of the print job.

Description:
RENDERING OF PRINT JOBS

BACKGROUND

[0001] In many situations, it might be required to render a print job to generate printer ready data. A printer can process the printer ready data to print the print job. For example, a print job can be generated by one or more application programs executed by a processing device. The print jobs may include any type of graphical elements or information supported by the printer, including text, pictures, and so forth. A render engine may render the print job so as to generate printer ready data. For example, the render engine may translate the print job into a page description language (PDL) that is understood by the specific printer, such as printer control language (PCL), Postscript or raster data.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] In order that the present disclosure may be well understood, various examples will now be described with reference to the following drawings.

[0003] FIG. 1 is a block diagram of an environment in which various examples can be implemented.

[0004] FIG. 2 is a block diagram of a system to print a print job according to examples.

[0005] FIG. 3 is a flow chart illustrating performing a print job at a target printer according to examples herein.

[0006] FIG. 4 is a flow chart illustrating render a print job in a network of printers according to examples herein.

[0007] FIGS. 5 and 6 are block diagrams illustrating rendering and printing of print jobs according to examples herein.

DETAILED DESCRIPTION

[0008] In the following description, numerous details are set forth to provide an

understanding of the examples disclosed herein. However, it will be understood that the examples may be practiced without these details. While a limited number of examples have been disclosed, it should be understood that there are numerous modifications and variations therefrom. Similar or equal elements in the Figures may be indicated using the same numeral.

[0009] As set forth above, a print job may be rendered to generate printer ready data. At least some printers may include a render engine capable of processing a print job to generate printer ready data. As used herein, a printer including a render engine refers to a printer device that integrates a render engine. Integration of a render engine in a printer might be advantageous since it facilitates eliminating the necessity to provide a render engine at a client side. Further, using an integrated render engine also facilitates preventing inconsistencies in the generation of printer ready data. Some examples of integration of render engines in a printer are illustrated in the examples below.

[0010] In some particular situations, rendering may require a relatively long time. In particular, rendering at a printer might impact delivery time of print jobs. For example, if at the time of receiving a new print job, the rendering workload at a target printer is above a selected workload threshold, printing of the new job might suffer of a significant delay. In at least some printing environments, e.g. commercial printing, print delivery time might be paramount.

[0011] In at least some of the examples herein, delay time is prevented by determining whether a rendering workload at a target printer exceeds a selected workload threshold. If the workload threshold is exceeded (i.e. the target printer is too busy rendering other print jobs), at least a portion of the new print job for the target printer is rendered at an available render engine of a networked printer. An available networked printer with rendering capabilities is used to generate the printer ready data. This data is then provided to the target printer to process the print job.

[0012] Thereby, at least some examples herein take advantage of free rendering capabilities of other printers in the same network to alleviate the rendering workload at the target printer. More specifically, any printer in the printer network can perform all or a part of the job rendering and deliver the result to the target printer. In other words, other printers in the same network offer their render engine to target printers in the network to render new print jobs when the target printer will be too busy as the print job is too complex. This prevents that a target printer with a slow render engine may produce a delay time in the print production process. [0013] As used herein, a print job refers to a file or set of files that are submitted to be printed. A print job may be identified by a unique number, and may be assigned to a particular target printer. A print job may also have print options associated with them such as, but not limited to, media size, number of copies and priority. As used herein, a target printer refers to a printer that is to print a specific print job. As used herein, a render engine is a mixture of software and hardware that renders a specific print job in printer ready data. Such printer ready data corresponds, for example, to raw print data translated via the rendering into a particular format (e.g. language) understood by the print engine of a target printer. The raw print data reproduces the print job.

[0014] The following description is broken into sections. The first, labeled "Environment," describes an exemplary environment in which various examples may be implemented. The second section, labeled "Components," describes examples of various physical and logical components for implementing various examples. The third section, labeled as "Operation," describes steps taken to implement various examples.

[0015] ENVIRONMENT: FIG. 1 depicts an environment 100 in which various examples may be implemented. Environment 100 is for printing a document 102. Environment is shown to include a document data store 104, a client system 108, and a set of networked printers 110 connected via a link 112.

[0016] Document data store 104 represents any data store capable of storing printable document 102. Printable document 102 may be composed of text, graphics, or a combination thereof. Printable document 102 may be stored in any suitable format such as, but not limited to, a pdf format, a .doc, or a html format. Document data store 104 is accessible via link 112 to make available document 102 to client system 108.

[0017] Client system 108 represents any computing system suitable to generate a print job 106 for printing document 102, such as a personal computer. For example, client system 108 may include a processor, a memory (such as ROM and RAM), user input devices, a disk drive, interfaces for inputting and outputting data, a floppy disk drive, a network interface to access link or a CD-ROM drive. The processor may perform various instructions to control the operation of client system. The memory, disk drive, floppy disk drive, and CD-ROM drive provide data storage mechanisms. The user input devices may include a keyboard, mouse, pointing device, or other mechanism for inputting information to client system 108. The network interfaces provide a mechanism for client system 108 to communicate with other devices (such as data store 104, or the set of printers 110) via link 112. The components of the above example of client system 108 are not shown in FIG. 1 for the sake of simplicity. Client system 108 may operate software to access document 102 and generate a print job 106 directed to a target printer 114 at the network set 110 via link 112.

[0018] The set of networked printers 110 is composed of a set of networked printers 114, 116, 118 communicated via link 112. Printer set of 110 may include any number of networked printers such as at least two printers. Printing via networked printers 110 may be managed via a suitable printing software that facilitates sending of a print job 106 via link 112. The printing software may reside, for example, in client 108 or in a print server (not shown).

[0019] The printers in the set of printers 110 are shown to include a render engine 120.

Render engines 120 may be a mixture of software and hardware to process document data in a print data into print ready data 122. Print ready data 122 may be used by target printer 114 to print document 102 without further rendering. More specifically, render engine 120 is capable of rendering a document into a directly printable format by incorporating any fonts, templates, or other data required to render the document. For example, render engine 120 may process data from print job 106 into a PCL format or a Postscript format that causes reproduction of document 102 by target printer 114. Rendering engine 120 may be implemented using an embedded language interpreter to render print jobs in the printer itself.

[0020] The set of networked printers 110 are interfaced via link 112 such that, when the rendering workload at target printer 114 exceeds a selected workload threshold, at least a portion of print job 106 is redirected to an available render engine of other printers in the networked set. The available render engines are then responsible to generate print ready data 122. The print ready data 122 can then be provided to target printer 114 to print the print job.

[0021] Printers in the printer set 110 may include any type of document reproduction device such as, but not limited to, laser printers, ink-jet printers, copiers and fax machines. In some specific examples, printers in the printer set 110 are commercial printers such as large format printers or high production print presses. Commercial printers are in contrast to customer printers that are generally designed for low volume print production. Therefore, it might be particularly advantageous to provide a commercial printer with a rendering engine.

[0022] Printers in the printer set 110 may include a print engine, a memory system coupled to a processor, a network interface, or a serial/parallel interface (these elements are not shown in FIG. 1 for the sake of simplicity). A print engine provides the components (hardware and software) to reproduce document 102 in a hard copy. A memory system (e.g. a disk drive, a flash storage, a RAM/ROM storage or a combination thereof) may provide storage for software to direct the print/render process via the processor as well as data being printed or other information used by the printer. A network interface provides a connection for each printer via link 112 to send and receive print jobs as well as print ready data. Link 112 represents generally one or more of a cable, wireless, fiber optic, or remote connections via a telecommunication link, an infrared link, a radio frequency link, or any other connectors or systems that provide electronic communication. Link 112 may include, at least in part, an intranet, the Internet, or a combination of both. Link 112 may also include intermediate proxies, routers, switches, load balancers, and the like.

[0023] COMPONENTS: FIG. 2 depicts examples of physical and logical components for implementing various examples. FIG. 2 depicts a system 200 for printing a print job. System 200 includes, in an integrated configuration, a target render engine 202, a network engine 204, and a printer engine 206.

[0024] Target render engine 202 represents generally any combination of hardware and programming to render print jobs. As illustrated above with respect to FIG. 1, print jobs may be generated by a client system and provided to print system 200 via a link (e.g. a link such as the network or an enterprise network). The rendering of print jobs by target render engine 202 may cause a rendering workload. For example, target render engine 202 may be associated with a processor in which instructions are loaded to process a print job 208 stored in a data store 210. The rendering may result in generated print ready data 212. This process produces a workload on the processor that might limit its capacity to render further print jobs. As set forth above, to prevent delays in the processing of print jobs, if the rendering workload of a target printer is above a certain limit, the rendering may be redirected to an available rendering engine of a networked printer.

[0025] Network engine 204 represents generally any combination of hardware and programming to cause rendering of at least a portion of a specific print job at an available render engine of a networked printer when a rendering workload of the target render engine exceeds a selected workload threshold. For example, network 204 may assess that the current workload of rendering engine 202 is above a selected workload threshold value 218 stored in data store 210. Workload threshold value 218 may be a preselected value or be a dynamically chosen value. Workload threshold value 218 may be selected to prevent that delay in printing a certain print job is within a certain time limit. A user may be given the option to select workload threshold value 218. Alternatively, or in addition thereto, workload threshold value 218 may be automatically selected taking into account print parameters for printing print job 208.

[0026] If network engine 204 determines that rendering engine 202 is too busy for rendering print job 208, then it might locate an available render engine of a printer in a network common to system 200. For example, network engine 204 may access a list 220 of available render engines maintained at data store 210. For example, printers with available render engines may advertise its availability in the network, and list 220 may be actualized according to the advertisements. Then, network engine 204 may send print job 208 to an available render engine 210. Available render engine 210 generates print ready data 212 from the received print job 208 and send it for store in data store 210. Thereby, print system 200 has access to the generated print ready data 212.

[0027] Printer engine 206 represents generally any combination of hardware and

programming to cause printing the print job using the at least a portion of the print job rendered at the available render engine. For example, printer engine 206 may access print ready data 212 generated by external rendering engine 214. Printer engine 206 may then cause printing of a hard copy by directly processing print ready data 212, i.e. without any further rendering. In alternative examples, the external rendering engine only partially renders the print job and system 200, and in particular its rendering engine 202, or one or more of other available rendering engines render the remaining portions of the print job.

[0028] In the foregoing discussion with respect FIG. 1, various components were described as combinations of hardware and programming. Such components may be implemented in a number of fashions. The programming may be processor executable instructions stored on a tangible memory media and the hardware may include a processor for executing those instructions. Memory can be said to store program instructions that when executed by processor implement system 200 of FIG. 2. The memory may be integrated in the same device as the processor or it may be separate but accessible to that device and processor. Further, the memory may be integrated in a single memory device or distributed over multiple devices. Analogously, processor may be integrated in a single processor device or distributed over multiple devices.

[0029] In an example, the program instructions can be part of an installation package that can be executed by a processor to implement system 200. In this case, the memory may be a portable medium such as a CD, DVD, or flash drive or memory maintained by a server from which the installation package can be downloaded and installed. In another example, the program instructions may be part of an application or applications already installed. Here, the memory can include integrated memory such as a hard drive. Further, the memory may include an operating system and applications. The operating system includes a collection of programs that when executed by the processor serve as a platform on which the applications can run. Examples of operating systems include, but are not limited, to various versions of Microsoft's Windows® and Linux®. The applications are program instructions that than when executed by the processor function as an application that performs the functionality stored in the modules described in the following.

[0030] OPERATION: FIGS. 3 to 6 show flow diagrams for processing documents according to examples herein. In discussing these Figures, reference is made to the diagrams of FIGS. 1-2 to provide contextual examples. Implementation, however, is not limited to those examples.

Again, such references are made simply to provide contextual examples.

[0031] FIG. 3 shows a flow diagram 300 to perform a print job at a target printer (e.g. target printer 114 shown in FIG. 1) in a network (e.g. set of printers 110 interconnected via link 112 as shown in FIG. 1). As shown by FIG. 1, target printer 114 includes a render engine 120. Other printers in the network also include render engines 120.

[0032] At block 302, it is determined whether a rendering workload of the target render engine (e.g. target engine 120 of target printer 114) exceeds a selected workload threshold.

Referring to FIG. 2, network engine 204 may be responsible of implementing block 302 based on selected workload threshold value 218 stored in data store 210.

[0033] At block 304, it is decided which render engine is to render the print job based on the determination at block 302. If the determination is positive, i.e., the rendering workload of the target render engine exceeds the selected workload threshold, then flow chart 300 goes to block 306 in which at least a portion of the print job is sent to an available render engine of a printer in the network. The sending at block 306 may include searching for a printer in the network that is indicated as available for rendering. This might involve using a list of available render engines as set forth above with respect to FIG. 2. More specifically, the target printer is to maintain a list of printers in the network with available render engines. The list may be actualized based on availability advertisement of printers in the network.

[0034] If the determination at block 304 is negative, i.e., the rendering workload of the target render engine exceeds the selected workload threshold, then flow chart 300 goes to block 308, in which the print job is rendered by the target printer engine (e.g. target engine 120 of target printer 114).

[0035] At block 310, the target printer is provided with printer ready data to print the print job. The printer ready data corresponds to the at least a portion of the print job rendered by the available render engine. For example, looking at FIG. 1, print ready data 122 generated by at least one of the render engines 120 of other networked printers 116, 118 is made accessible to target printer 114 via link 112. As used herein, providing printer ready data to the target printer can be understood as making available the printer ready data. This might imply, for example, storing the printer ready data at a memory (also in a transitory memory) accessible by the target printer. Thereby, a printer engine of the target printer (e.g. printer engine 206 shown in FIG. 2) can access printer ready data and directly proceed to reproduce a document corresponding to the specific print job.

[0036] FIG. 4 shows a flow diagram 400 to render a print job in a network of printers according to some examples herein. As illustrated above with respect to FIG. 1 printers in the network include a render engine; the print job is to be printed by a target printer of the printer network. (It will be understood that the network may include other printers not equipped with rendering engines.)

[0037] At block 402, a notification that a printer of the network is available to render the print job is received. For example, referring to FIG. 1, printers 114, 116, 118 may send notifications indicating availability of their printer engines. These notifications may be shared with the printers in set 110 or they may be sent to a centralized server system (not shown in FIG. 1).

[0038] At block 404, a list of printers available to render the print job is actualized based on the notification received at block 402. For example, referring to FIG. 1, each printer of printer set 110 may maintain its own list of printers available for rendering. Alternatively, or in addition thereto, a centralized server system may maintain the list and make it available to select printers to which a print job may be sent for rendering.

[0039] At block 406, it is determined whether the print job can be rendered at the target printer without causing a significant time delay. For example, referring to FIG. 2, target render engine 202 may be provided with the functionality to make the determination at block 408. Target render engine 202 may determine that rendering a print job causes a significant time delay to reproduce the print job if it is currently rendering another print job or if the rendering workload thereof is above a certain limit. A significant time delay may be a time delay above a specific time limit. This time limit may vary depending of the environment into which the target printer is implemented and/or may be user selectable. If the determination results in assessing that rendering of the print job at the target printer would cause a too high time delay, print flow 400 moves to block 408.

[0040] At block 408, the print job is sent for rendering to one or more of the printers in the list of available printers (see block 404) so as to generate print ready data. Once the print job is rendered then, at block 410 the generated print ready data is redirected to the target printer. Thereby, rendering of print jobs may be shared by available resources at the network and time delays by printing can be mitigated. [0041] In at least some examples herein, the available render engine to render a print job that is to be printed by another printer corresponds to a malfunctioning printer non-capable of printing a print job. Thereby, the rendering resources of a printer that is not capable of printing are used to improve time delivery of print jobs.

[0042] In at least some examples herein, the print job is completely rendered by an available render engine. This is illustrated by FIG. 5. A client system 502 may generate a print job 504 and send it to a target printer 506. Target printer 506 includes a render engine 508. In this example, at the time of receiving print job 504, render engine 508 is too busy (e.g. because it is currently processing another print job) to render print job 504. Therefore, target printer 506 redirects print job 504 to a network printer 510 with a render engine 512 available for rendering. Render engine 512 generates print ready data 514 for reproducing print job 504 and redirects this print data to target printer 506. Target printer 506 may then directly process (e.g., without further rendering) the received print ready data 514 and print a hard copy 516 that reproduces print job 404.

[0043] In at least some examples herein, the print job is rendered in parallel by a plurality of render engines of printers in the network. This is illustrated by FIG. 6. The example of FIG. 6 is analogous to the example shown in FIG. 5 but, when render engine is too busy to render print job 504, target printer 506 communicates with a load balancing server 602 for managing the rendering of print job 504.

[0044] Load balancing server 602 selectively transmits information relating to print job 504 to a plurality of render engines of printers in the same network than target printer 506. In the illustrated example, load balancing server 602 distributes print job portions 604, 606 to network printers 610, 612 so that their respective render engines 614, 616 can generate print ready data 618, 620 that in conjunction render print job 504. Print ready data 618, 620 is transmitted to target printer 506 in conjugated form 622. Target printer 606 can then directly process conjugated print ready data 622 to print hard copy 516 that reproduces print job 504. Although the example of FIG. 6 shows only two printers for rendering print job 504, it will be understood that the rendering may be performed by any number of networked printers equipped with rendering engines. The load balancing may be performed based on available rendering capabilities at the individual render engines.

[0045] At least some of the examples above facilitate reducing waiting time for printing a print job in a print network environments in which printers are equipped with render engines. More specifically, at least some of the examples herein take advantage of available rendering engines of printers in the network when the render engine of the target printer is too busy to promptly render a specific print job. This is in contrast to other environments in which the user might directly select an idle device with a fast render engine. However, this may require him to use a printer that is not the most appropriate one. This may for example be obliged to change the media or the supplies, or even move to remote location to have access to an idle printer. In other environments, to prevent exceeding the processing capacity, printers may simply stop an incoming print job, and wait until its rendering resources are available again. Such approaches may impact the perceived performance of the printer.

[0046] It will be appreciated that examples above can be realized in the form of hardware, programming or a combination of hardware and the software engine. Any such software engine, which includes machine-readable instructions, may be stored in the form of volatile or nonvolatile storage such as, for example, a storage device like a ROM, whether erasable or rewritable or not, or in the form of memory such as, for example, RAM, memory chips, device or integrated circuits or on an optically or magnetically readable medium such as, for example, a CD, DVD, magnetic disk or magnetic tape. It will be appreciated that the storage devices and storage media are implementations of a tangible computer-readable storage medium that are suitable for storing a program or programs that, when executed, for example by a processor, implement examples. Accordingly, examples provide a program comprising code for implementing a system or method as claimed in any preceding claim and a tangible or intangible computer readable storage medium storing such a program. A tangible computer-readable storage medium is a tangible article of manufacture that stores data. (It is noted that a transient electric or electromagnetic signal does not fit within the former definition of a tangible computer- readable storage medium.)

[0047] In the foregoing description, numerous details are set forth to provide an

understanding of the examples disclosed herein. However, it will be understood that the examples may be practiced without these details. While a limited number of examples have been disclosed, numerous modifications and variations therefrom are contemplated. It is intended that the appended claims cover such modifications and variations. Further, flow charts herein illustrate specific block orders; however, it will be understood that the order of execution may differ from that which is depicted. For example, the order of execution of two or more blocks may be scrambled relative to the order shown. Also, two or more blocks shown in succession may be executed concurrently or with partial concurrence. Further, claims reciting "a" or "an" with respect to a particular element contemplate incorporation of one or more such elements, neither requiring nor excluding two or more such elements. Further, at least the terms "include" and "comprise" are used as open-ended transitions.