In typical printing systems, a print job is received from a source as a file formatted according to a page description language (PDL) understood by the printing system. Prior to printing, one or more raster image processors (RIPs) generally convert the print job file into a raster image recognized by a printing device. Often the print job file undergoes various additional processing prior to or during the rasterization process to adapt the print job for optimal printing by a particular printing device. This additional processing occurs pre-press, that is, prior to the print job being printed on a physical medium.
Trapping is one such pre-press processing function. Trapping is a color management technique in which small overlaps are created between abutting colors in an image to be printed in order to mask potential misalignment issues on the printing device. In general, trapping is performed at one of two stages of the printing process: (1) during a conversion of the print job to a page description language file; or (2) during rasterization by one or more raster image processors.
The accompanying drawings illustrate various examples of the principles described herein and are a part of the specification. The illustrated examples are merely examples and do not limit the scope of the claims.
Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements.
As described above, trapping can be a useful pre-press tool. By discretely modifying a print job image to compensate for potential printing device misalignment issues, the overall aesthetic quality of printed image may increase. Often trapping functions may be performed at the rasterization stage of printing by one or more parallel raster image processors (RIPs). However, prior solutions for distributing print jobs to parallel RIPs can be quite inefficient. For example, many prior solutions simply assign each print job to a single, separate RIP. However, if trapping is to be performed on that particular print job, the raster image processing time may significantly increase, thereby reducing the print job throughput. This reduced print job throughput may, in turn, result in an underutilization of the printing device. In other prior solutions, a print job may be divided into partitions and distributed among multiple RIPs without taking into account the impact of trapping on RIP processing resources. This configuration may also result in a reduced print job throughput.
In view of the above and other considerations, the present specification discloses methods, systems, and computer program products for processing a multi-page file, such as a Page Description Language (PDL) file, for printing. In these methods, systems, and computer program products, a determination is made for each page of the file of whether a trapping function is to be performed on that page. The collective determinations may be attached to the file as metadata, and the pages of the file are distributed among multiple parallel RIPs based on which pages are to undergo trapping processing.
For example, the pages may be distributed such that pages indicated for trapping receive more RIP processing resources and pages not indicated for trapping receive fewer RIP processing resources. By increasing the RIP processing resources allocated to pages indicated for trapping, rasterization and trapping functions may be performed on the pages more efficiently, thereby allowing these functions to be completed at or above printing speed.
In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present systems and methods. It will be apparent, however, to one skilled in the art that the present apparatus, systems and methods may be practiced without these specific details. Reference in the specification to “an example” or similar language means that a particular feature, structure, or characteristic described in connection with the example is included in at least that one example, but not necessarily in other examples. The various instances of the phrase “in one example” or similar phrases in various places in the specification are not necessarily all referring to the same example.
As used in the present specification and claims, the term “processor” refers to hardware circuitry capable of executing stored executable code.
As used in the present specification and claims, the term “module” or “submodule” refers to one or more elements of functionality implemented by a machine, such as a processor.
As used in the present specification and claims, the term “raster image processor” or “RIP” refers to hardware circuitry, or software implemented by hardware circuitry, that accepts a page description language file as input and produces a raster or bitmap image from the page description language file for output to a printing device.
As used in the present specification and claims, the term “page” refers to a single physical medium on which an image is printed or a digital representation of the image to be printed on a single physical medium. The image to be printed may include text, graphical data, or a combination of text and graphical data.
As used in the present specification and claims, the term “trapping function” refers to a prepress technique in which small overlaps are created between abutting colors to compensate for potential registration or alignment imperfections in a printing device.
Turning now to the Figures,
Each of the job analysis module (110), the partitioning module (115), the raster image processing module (120), and the aggregation module (125) may be implemented by one or more machines executing machine-readable instructions to perform a desired functionality. In the event that multiple machines are used to implement one or more of the modules (110, 115, 120, 125), the machines may execute portions of the modular functionality in serialized or parallel fashion, as may suit a particular implementation of the principles of the present specification. The printing device (130) may be a conventional or special-purpose electronic printing device (130), such as a digital printing press, a laser printer, an inkjet printer, or similar device.
In certain examples, each of the job analysis module (110), the partitioning module (115), the raster image processing module (120), and the aggregation module (125) may be implemented by circuitry packaged with the printing device (130). Alternatively, one or more of these modules (110, 115, 120, 125) may be packaged separately from the printing device (130).
Furthermore, in certain examples the same processing circuitry may implement one or more of the job analysis module (110), the partitioning module (115), the raster image processing module (120), and the aggregation module (125). Additionally or alternatively, dedicated circuitry may be used to implement a single module (110, 115, 120, 125).
A print job is produced as a page description language (PDL) file by the print job source (105). A page description language is a language that describes the appearance of a printed page in a format understood by the printing device (130). Any page description language that suits a particular application of the principles herein may be used by the print job source (105) to create the page description language file.
The print job source (105) provides the page description language file to a job analysis module (110). The page description language file may include a number of pages to be printed. The job analysis module (110) receives the page description language file and performs an analysis of the content of each of the pages to determine whether or not a trapping function should be performed on each of the pages. In particular, the job analysis module (110) may look for the existence of abutting colors in each page and determine whether the proximity of those colors warrants trapping. The job analysis module (110) may further append information about which pages in the page description language file warrant trapping to the page description language file as metadata for use by other modules in the system (100).
The job analysis module (110) may then present the page description language file with its accompanying metadata to the partitioning module (115). The partitioning module (115) divides the page description language file into multiple partitions based on the trapping metadata produced by the job analysis module (110). Each partition may include one or more pages from the page description language file. Each partition is assigned to an individual raster image processor (135-1 to 135-N) in the raster image processor module for parallel raster image processing.
In certain examples, the partitioning module (115) may use the trapping metadata to determine how to partition the job in order to maximize throughput at the printing device (130) by reducing the overall time to perform raster image processing on the print job. Thus, in an illustrative print job having a mix of pages indicated for trapping and pages not indicated for trapping, the partitioning module (115) may assign the pages indicated for trapping to smaller partitions and the pages not indicated for trapping to larger partitions.
In this way, because the partitions are assigned in parallel to raster image processors, relatively more processing resources can be dedicated to pages indicated for trapping than to pages not indicated for trapping. Due to the processing intensive nature of trapping functions, this distribution may substantially increase the efficiency of resource allocation, thereby speeding up raster image processing for the print job as a whole, and reducing the idle time of the printing device (130).
The aggregation module (125) receives the raster images output from the individual raster image processors (135-1 to 135-N), organizes them into a consecutive order according to the original order of the pages in the page description language file output by the print job source (105), and outputs the raster images of the pages to the printing device (130) in the consecutive order.
In one example, the print job source (105) may provide a page description language job with 20 pages, where pages 1-5 and 12-17 contain objects for which trapping should be performed. The remaining pages 6-11 and 18-20 do not contain objects necessitating trapping. The raster image processing module (120) of the system (100) may include 18 separate raster image processors (135-1 to 135-N) (e.g., N=18), which is typical for a digital printing press. In this example, the job analysis module (110) may receive the page description language file from the print job source (105), analyze each page in the page description language file, and determine that trapping will be performed on pages 1-5 and 12-17. This information is then appended to or associated with the page description language file as metadata.
Continuing with this example, the partitioning module (115) may then receive the page description language file and trapping metadata from the job analysis module (110) and use the trapping metadata to divide the page description language file into 13 separate partitions. Each of pages 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, and 17 (i.e., the pages indicated for trapping) may be submitted to a separate raster image processor (135-1 to 135-N) as its own partition. By contrast, the pages not indicated for trapping may be grouped together in the remaining partitions, with pages 6-11 being submitted to a separate raster image processor (135-1 to 135-N) as the 12th partition, and pages 18-20 being submitted to a separate raster image processor (135-1 to 135-N) as the 13th partition.
Thus, for this print job, 13 of the 18 raster image processors (135-1 to 135-N) in the raster image processing module (120) are used to perform raster image processing on the individual pages. These 13 raster image processor (135-1 to 135-N) may perform raster image processing on their assigned partitions in parallel. By partitioning the print job such that the pages indicated for trapping are allocated more raster image processing resources than pages not indicated for trapping, the resource utilization efficiency of the raster image processors (135-1 to 135-N) is optimized, and the raster image processing is completed for the print job at or above the printing speed of the printing device (130).
The job analysis module (110) includes a trapping analysis submodule (210) and a metadata generator submodule (215). The trapping analysis analyzes each page of the received page description language file (205) to determine whether trapping is to be performed on that page at the raster image processing stage. Various methods of determining when and how to trap objects within a page description language file may be used. A determination of whether trapping is to be performed on a page may include (1) identifying the objects specified by the page description language file for that page; (2) identifying the color space of each object; and (3) identifying objects on the page, if any, that overlap or abut each other. In the event that two abutting or overlapping objects on the page are to be printed as different spot colors, trapping will be performed for that page. If the two abutting or overlapping objects are to be printed as processed colors, average color values may be computed around the abutting or overlapping the objects to determine whether the objects are subject to trapping.
The results of the trapping analysis performed for each of the pages may be attached or appended to the page description language file (205) as metadata (220) by the metadata generator submodule (215). Additionally or alternatively, the results of the trapping analysis performed for each of the pages may be stored in a database or other system which allows the results of each page to be associated with that page and referenced by a processor, machine, or module of the system for printing the file (205). In certain examples, the job analysis module (110) may also determine, for each page, a ratio of the area of trapping versus the area of the entire page. By compiling this data for each page, an indication of the relative complexity of each page and the print job as a whole may be determined. When included in the metadata (220), this data may be useful to the partitioning module (115,
Additionally, other data relating to the complexity of the pages and the print job in general may be determined by the job analysis module (110) and included in the metadata for the page description language file. For example, information about the transparency of page objects, the size of images, the resolution of images, the use of fonts, and/or the like may also be analyzed by the job analysis module (110) and included in the metadata for use by the partitioning module (115,
The metadata evaluator submodule (305) examines the metadata (220) received with the page description language file (205) to identify which of the pages in the print job are marked for trapping, and any other information included in the metadata that may be pertinent to the partitioning and distribution of the print job. The raster image processing capacity evaluator submodule (310) may identify which of the raster image processors (135-1 to 135-N) of the raster image processing module (120,
Based on at least the trapping information in the metadata (220) and the raster image processing capacity evaluator submodule (310), the partition generation submodule (315) divides the page description language file into partitions (330), and the partition assignment submodule (320) allocates each partition (330) to one of the parallel raster image processors (135-1 to 135-N) of the raster image processing module (120). As described above, the partition generation submodule (315) and the partition assignment submodule (320) may allocate the partitions (330) to the raster image processors (135-1 to 135-N) in such a way that raster image processing efficiency is optimized. In this way, raster image processing may be performed for the print job at a speed that is greater than or equal to the printing speed of the printing device (130).
Each partition is then assigned (block 615) to an individual raster image processor of a plurality of parallel raster image processors such that the plurality of raster image processors collectively perform raster image processing on the partitions at a rate greater than or equal to the printing rate of a printing device. The output of the raster image processors is provided (block 620) to the printing device for printing. In certain examples, the output of the raster image processors is first arranged into a consecutive order indicative of the order of the pages in the page description language file prior to being sent to the printing device.
In this illustrative device (705), an underlying hardware platform executes machine-readable instructions to exhibit a desired functionality. For example, if the illustrative device (705) implements the modules (110, 115, 120, 125) of
The hardware platform of the illustrative device (705) may include at least one processor (720) that executes code stored in the main memory (725). In certain examples, the processor (720) may include at least one multi-core processor having multiple independent central processing units (CPUs), with each CPU having its own L1 cache and all CPUs sharing a common bus interface and L2 cache. Additionally or alternatively, the processor (720) may include at least one single-core processor.
The at least one processor (720) may be communicatively coupled to the main memory (725) of the hardware platform and a host peripheral component interface bridge (PCI) (730) through a main bus (735). The main memory (725) may include dynamic non-volatile memory, such as random access memory (RAM). The main memory (725) may store executable code and data that are obtainable by the processor (720) through the main bus (735).
The host PCI bridge (730) may act as an interface between the main bus (735) and a peripheral bus (740) used to communicate with peripheral devices. Among these peripheral devices may be one or more network interface controllers (745) that communicate with one or more networks, an interface (750) for communicating with local storage devices (755), and other peripheral input/output device interfaces (760).
The configuration of the hardware platform of the device (705) in the present example is merely illustrative of one type of hardware platform that may be used in connection with the principles described in the present specification. Various modifications, additions, and deletions to the hardware platform may be made while still implementing the principles described in the present specification. For instance, it may be suitable in certain examples to implement one or more of the modules, submodules, or raster image processors of the preceding Figures as application-specific circuitry instead of as a processor that executes machine-readable code. In still other examples, a hybrid approach may be taken such that one or more of the modules, submodules, or raster image processors of the preceding Figures is implemented by a combination of application-specific circuitry and a processor executing machine-readable code.
The preceding description has been presented only to illustrate and describe examples and examples of the principles described. This description is not intended to be exhaustive or to limit these principles to any precise form disclosed. Many modifications and variations are possible in light of the above teaching.