A print job submitted to a printer is processed and the printer renders it onto paper using the electro-mechanical components. The rendering process causes the printer to move media (e.g. paper) through the printer and apply ink or toner across the width of the paper. Print jobs (e.g. for a document) are commonly recognized by printing sub-systems as successful if all pages of the document are printed by the printer.
The following description includes discussion of figures having illustrations given by way of example of implementations of embodiments of the invention. The drawings should be understood by way of example, not by way of limitation. As used herein, references to one or more “embodiments” are to be understood as describing a particular feature, structure, or characteristic included in at least one implementation of the invention. Thus, phrases such as “in one embodiment” or “in an alternate embodiment” appearing herein describe various embodiments and implementations of the invention, and do not necessarily all refer to the same embodiment. However, they are also not necessarily mutually exclusive.
Described herein are embodiments for logging print sub-jobs. In various printers and print sub-systems, print job results are binary—either the print job is successful or the print job fails. In a failed print job scenario, one or more pages of the print job might print successfully, but because not all pages print successfully the print job is considered to have failed. Furthermore, parts of a page might be printed successfully (e.g. 1st half) while other portions of the page (e.g. 2nd half) are not printed successfully, similarly resulting in a failed print job.
In a pay-for-printing business model where users pay for content that is actually printed as opposed to paying for ink/toner and paper, it is difficult to capture the value of any printed content associated with a failed print job. Embodiments described herein facilitate print tracking and logging at the object level or page level as opposed to the document level. In other words, a print sub-system according to embodiments described herein is capable of dividing a print job into more granular sub-jobs using object extraction in view of sub-job rules defined by a content owner or user.
Print job generation module 110 generates a print job from the received print content. In various embodiments, generating the print job includes generating multiple sub-jobs within the print job based at least in part on the content metadata. As used herein, a print sub-job, or simply “sub-job,” refers to a defined portion (i.e. something less than the whole) of the print content associated with a print job request. As used herein, a sub-job minimally comprises one extractable object (e.g., an image, text segment, etc.) from the printed content. In other words, a sub-job may be as granular as a single object, though a sub-job could be composed of multiple objects on a single page or over multiple pages of a document so long as the sub-job does not include the whole of the print content for the document.
Communications module 120 communicates sub-jobs to a printer in an ordered sequence where a next sub-job is provided to the printer in response to receiving an indication that a pending sub-job has been completed. In other words, the sequence of sub-jobs is communicated one at a time to the printer where completion of one sub-job is the trigger for sending the next sub-job. Once all sub-jobs have been completed, communications module 120 receives an indication from the printer that the print job has completed.
In the example system illustrated in
Communications module 230 receives print content and content metadata associated with a print job request from computing device 240 over a network (e.g. the Internet). For example, the print content could be a document for printing and the content metadata could include selected print options (color vs. black-and-white, portrait vs. landscape, two-sided printing, etc.). In various embodiments, content metadata also includes sub-job definitions and/or rules.
Print job generation module 220 generates a print job from the received print content. In particular, conversion module 222 may convert the print content into an intermediate format. For example, the print content may reside on computing device 240 as a word processing document, a spreadsheet, a web page document, or other format. In various embodiments, conversion module 222 converts the print content into PDF (Portable Document Format, an open standard for document exchange, made available by Adobe Systems, Inc. of Mountain View, Calif.). The conversion could be a conversion into other suitable intermediate formats such as XPS (XML Paper Specification) in other embodiments. Print content may be received in a suitable intermediate format and therefore not need to be converted. In other words, conversion to an intermediate format (e.g. PDF, XPS, etc.) is optional depending on the format in which a document is received. PDF and other suitably formatted documents are structured in a tree hierarchy (e.g. with the document level being at the top of the hierarchy, followed by page level, and then object level, etc.). Given this structure, PDF documents may be parsed into extractable objects (e.g. images, graphic elements, text segments, etc.).
Once in PDF format (or other suitable format for object extraction), object extraction module 224 determines object locations and/or sizes (e.g. defined by coordinates) within the document. Images and other objects, also known as raster images or “Image XObjects” in PDF parlance, are represented by dictionaries containing page descriptions with an associated stream. In simpler terms, a PDF is like an envelope that contains various objects (images, text segments, etc.) along with associated object metadata. Object extraction module 224 extracts objects from the document based at least in part on sub-job boundary metadata from the document. Sub-job boundaries may be defined by a publisher, content owner, service provider, or user in different embodiments.
In an example, consider printing a page full of postage stamps where each stamp has an associated cost. Images of postage stamps are placed next to each other and may be visualized as rows of information to print.
In pseudo-command parlance, the contents of a print job are wrapped between a “begin job” descriptor and an “end job” descriptor. Pages within the print job are bound by “begin page” and “end page” descriptors. Accordingly, print job generation module 220 inserts sub-job documents created by document module 226 within page boundaries of the print job document. In addition to inserting multiple sub-job documents into a page wrapper, multiple print job documents could be inserted into a single print job wrapper.
Conversion module 222 converts the print job document and any sub-job documents contained in the print job into a print ready format. For example, conversion module 222 may perform rasterization on the print job document and any sub-job documents using a page description language such as PostScript (available from Adobe Systems, Inc.) or PCL (Printer Control Language, available from Hewlett-Packard Company of Palo Alto, Calif.). In various embodiments, multiple sub-jobs may be processed (e.g. created and/or converted to print-ready format) in parallel.
In connection with converting the print job document and any sub-job documents to a print-ready format, communications module 230 sends the print job document in print-ready format to a printer. In particular, sub-jobs are sent to the printer in an ordered sequence. Communications module 230 receives an indication from the printer when a sub-job has completed (e.g. successfully). This indication triggers the next sub-job in the queue to be sent to the printer. In other words, the next sub-job at the top of the queue is held in the queue until the pending sub-job (i.e. the most recent sub-job sent to the printer) is completed.
Tracking module 232 tracks successful completion of sub-jobs by the printer. Tracking module 232 may also track failed sub-jobs for auditing purposes and/or print job restarts. As discussed above, an indication of completion of a sub-job triggers a next sub-job to be sent to the printer. This indication is stored and/or tracked by tracking module 232. In view of the sub-job details (e.g. size, type of content—image vs. text, quality parameters, etc.), accounting module 234 generates a user charge for each completed sub-job. For example, larger sub-jobs and/or color sub-jobs may incur a higher charge than smaller black-and-white sub-jobs. In addition, the nature of the content itself may incur certain charges. For example, printing stamps might incur a surcharge for the cost of the stamp. Certain types of copyrighted content may also incur pre-defined charges.
A system communicates 310 a print job for a document to a printer. In various embodiments, the printer is a network-connected printer registered or connected with the system. The print job communicated to the printer comprises multiple sub-jobs generated via object extraction in view of at least one sub-job rule. As discussed above, a sub-job refers to a defined portion (i.e. something less than the whole) of the print content associated with a print job request. A sub-job minimally comprises one extractable object (e.g., an image, text segment, etc.) from the printed content. In other words, a sub-job may be as granular as a single extractable object, though a sub-job could be composed of multiple objects over multiple pages of a document so long as the sub-job does not include the whole of the print content for the document.
The system logs 320 sub-job print results associated with the print job. For example, rather than sending a print job and receiving a single indication that the print job has completed (e.g. successful or failed), sub-job print results are separately communicated back to the system and those results are logged.
A system receives 410 a document including document metadata from a user. For example, a user may send a document for printing over a network (e.g. Internet) from his/her mobile device or other computing device. Based on the document metadata, the system generates 420 a print job for the document which includes generating multiple sub-jobs within the print job. The document metadata may include printing properties, finishing properties, etc. In addition, the document metadata may include one or more sub-job rules. Sub-job rules may define a size and/or location boundary for objects to be included in a particular sub-job or a set of sub-jobs. In other words, the sub-job rule(s) defines how to parse a print job into sub-jobs.
In the example illustrated in
Generation of sub-jobs may include generating a separate document (e.g. PDF document) for each sub-job. Multiple sub-jobs may be wrapped into a single page descriptor boundary within a print job document. Each sub-job document is separately converted to print-ready format (e.g. PCL, PostScript, etc.) prior to being sent to the printer. Processing of sub-jobs may be done in parallel. The system delivers 430 sub-jobs to the printer in an ordered sequence. In other words, a second sub-job is not delivered to the printer until a notification has been received that the first sub-job has successfully printed. In addition to receiving notifications for completed sub-jobs, the system receives 440 a notification upon completion of the entire print job.
A system receives 510 a document including document metadata. The document may be received in PDF format or other suitable format for object extraction, in which case document conversion is not necessary. However, if the received document is not in PDF or other suitable format, the system converts 520 the document into a suitable intermediate format (e.g. PDF). With the document in the appropriate intermediate format, the system determines 530 object locations and/or sizes within the document. Objects may be images, text segments, forms, etc. Based on the object locations and/or sizes and in view of the document metadata (e.g. sub-job rule or boundary information), the system extracts 540 objects for creating sub-jobs. In various embodiments, a separate intermediate format document (e.g. PDF) is generated 550 for each sub-job.
The system converts 560 each sub-job document into print-ready format (e.g. PCL, PostScript, etc.) prior to sending sub-jobs to a printer as part of a print job. This processing may be done in parallel for some or all of the sub-jobs. The system receives and tracks 570 notifications from the printer of completed sub-jobs. A cost is associated 580 with each completed sub-job. For example, the cost might be a generic cost based on the size of the sub-job or print qualities (e.g. color vs. black-and-white, etc.). The cost could be a specific cost for the sub-job based on the nature of the content included in the sub-job. For example, in printing stamps, each stamp has a specified cost/value associated with it. Certain copyrighted material and other content could also have a specific cost associated with it. Any or all of these costs could be factored into the cost of a sub-job. Based on the aggregated cost of all the completed sub-jobs, the system generates 590 a user charge for the whole print job. The total charge could simply be the aggregated cost of the completed sub-jobs or additional charges or discounts could be applied in view of other factors (e.g. volume, loyalty, membership benefits, etc.).
Various modifications may be made to the disclosed embodiments and implementations of the invention without departing from their scope. Therefore, the illustrations and examples herein should be construed in an illustrative, and not a restrictive sense.