1. Field of the Invention
The present invention relates to a printing apparatus, a printing method, and a program.
2. Description of the Related Art
Conventionally, there has been used variable printing in which printing is performed by combining image data of fixed data and image data of variable data.
Recently, Portable Document Format/Variable and Transactional (PDF/VT) has been proposed as a data format enabling efficient execution of the variable printing. In the PDF/VT format, new techniques for enabling reuse of fixed data are prepared. For example, one technique is to cache fixed data in a rasterized state and share it with another printing for reuse of the fixed data.
Further, there has been disclosed the technique for rasterizing the object into image data and storing it into a memory when an object being rasterized currently and already generated intermediate data contain a similar content (for example, Japanese Patent Application Laid-Open No. 2004-192390). However, in the technique discussed in Japanese Patent Application Laid-Open No. 2004-192390, since the storage capacity for this caching is finite, it is difficult to store image data with respect to all reusable data which can be reused.
According to an aspect of the present invention, a printing apparatus comprises a generation unit configured to generate intermediate data based on a print job containing at least one or more reusable data and variable data for each of the reusable data, a conversion unit configured to convert the intermediate data generated by the generation unit into image data, and a storage unit configured to select at least one of the intermediate data of the reusable data and the image data of the reusable data according to a range in which the reusable data is reused, and store the selected data as a cache.
According to the present invention, it is possible to more appropriately manage data with respect to reusable data.
Further features and aspects of the present invention will become apparent from the following detailed description of exemplary embodiments with reference to the attached drawings.
The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate exemplary embodiments, features, and aspects of the invention and, together with the description, serve to explain the principles of the invention.
Various exemplary embodiments, features, and aspects of the invention will be described in detail below with reference to the drawings.
First, a network configuration of a printing system according to a present exemplary embodiment will be described with reference to
Next, the overview of the MFP 102 will be described with reference to
Next, the configuration of the PC 101 and the configuration of the MFP 102 will be described with reference to
In the present exemplary embodiment, a central processing unit (CPU) (not shown) carries out processing according to the procedures of programs stored in the storage apparatus 304, which realizes the functions and various kinds of processing of the PC 101. For example, the CPU reads out the program for causing the document generation application to operate from the storage apparatus 304, and carries out processing according to the procedure of the read-out program, which realizes the document generation application. Further, for example, the CPU reads out the program for causing the printer driver 303 to operate, from the storage apparatus 304 and carries out processing according to the procedure of the read-out program, which realizes the printer driver 303. The printer driver 303 generates, for example, Page Description Language (PDL) data from the document data 302. Further, the printer driver 303 performs, for example, the settings of finishing control related to the MFP 102 to the document data 302. In the present exemplary embodiment, data generated by the printer driver 303 is referred to as “print data”.
The MFP 102 includes a communication interface (I/F) 307, a scanner 314, and a storage apparatus 315. The communication interface 307 mediates exchange of various kinds of data between the MFP 102 and, for example, the PC 101. The scanner 314 scans document, and stores data with respect to the scanned document into the storage apparatus 315. The storage apparatus 315 stores (caches), for example, intermediate data 310 (e.g. intermediate page description language data) and image data 312 which will be described later. In the present exemplary embodiment, a CPU (not shown) reads out programs stored in the storage apparatus 315 and carries out processing according to the procedures of the read-out programs, which realizes the functions of the MFP 102 and processing of the MFP 102 illustrated in flowcharts which will be described later. The functions realized by the MFP 102 include, for example, a data reception unit 308, an interpreter unit 309, a renderer unit 311, a printer engine unit 313, a control unit 316, and a user interface (UI) unit 317. The data reception unit 308 receives, for example, print data transmitted from the PC 101. The interpreter unit 309 analyzes the print data received by the data reception unit 308. The interpreter unit 309 can analyze PDL such as PostScript (PS), Printer Control Language (PCL), and Laser beam printer Image Processing System (LIPS), and can analyze a format such as PDF and PDF/VT. The interpreter unit 309 analyses the print data to generate the intermediate data 310. The intermediate data 310 includes rendering objects such as “bitmap, run-length, trapezoid, box, and high-speed boundary encoded bitmap”, background patterns, and rendering logic data to be used when the rendering objects and the background patterns are rendered on a raster memory. The renderer unit 311 analyzes the intermediate data 310, and converts it into the image data 312. The printer engine unit 313 converts the image data 312 into a video signal (not shown), and prints the image. The control unit 316 is in charge of main control of the MFP 102. The UI unit 317 is a user interface (for example, screen) for operating the MFP 102.
Next, data (for example, print data and page data) related to variable printing will be described with reference to
Then, as illustrated in
The overall flow of processing for variable printing performed by the MFP 102 will be now described with reference to the flowchart illustrated in
In step S405, the control unit 316 sets a cache method with respect to reusable object data existing in the print data to speed up the print processing. The details of the cache method setting processing will be described later with reference to the flowchart illustrated in
Now, the cache method setting processing will be described with reference to
In step S504, the control unit 316 determines whether the object data processed in step S502 is reusable object data. If the object data is reusable object data (YES in step S504), the control unit 316 subsequently performs the processing of step S505. On the other hand, if the object data is not reusable object data (NO in step S504), subsequently, the operation proceeds to step S502. In step S505, the control unit 316 determines whether the intermediate data 310 of the reusable object has been already generated. If the control unit 316 determines that the intermediate data 310 has been already generated (YES in step S505), the control unit 316 subsequently performs the processing of step S508. On the other hand, if the control unit 316 determines that the intermediate data 310 is not yet generated (NO in step S505), subsequently, the operation proceeds to step S506.
In step S506, the interpreter unit 309 generates the intermediate data 310 from the reusable object data contained in the print data. In step S507, the control unit 316 performs a raster image processor (RIP) time estimation of the generated intermediate data 310. The term “RIP” refers to the processing in which the renderer unit 311 converts the intermediate data 310 into the image data 312. Further, the term “RIP time estimation” refers to the processing in which the control unit 316 estimates a time that the renderer unit 311 will take to convert the intermediate data 301 into the image data 312. Mainly, there are two methods for this estimation. One of them is that the control unit 316 analyzes the configuration of the intermediate data 310 and estimates the RIP time according to the analyzed configuration with use of a preset time. The other method is to measure only a time that the renderer unit 311 spent to convert the intermediate data 310 to the image data 312. In this method, for example, the time required for storing the image data 312 into the storage apparatus 315 (image data storage unit) by the control unit 316 is not counted as the RIP time. The present exemplary embodiment employs the second method as the method for the measurement by the control unit 316. After that, the operation proceeds to step S502.
If the control unit 316 determines that the intermediate data 310 has been already generated (YES in step S505), the operation proceeds to step S508. In step S508, the control unit 316 increments a counter N (integer value) which indicates how many times the reusable object is referred to. In other words, the control unit 316 keeps count of how many times the reusable object is referred to. The counter N is installed in the storage apparatus 315. Then, the operation proceeds to step S502. In step S509, the control unit 316 calculates a total RIP time (t) for each reusable object from the RIP time estimated in step S507 and the counter N incremented in step S508. The total RIP time (t) for each reusable object is calculated by multiplying the RIP time for each reusable object by the counter N for each reusable object. At this time, the control unit 316 assigns a priority order (order) to the reusable object according to the total RIP time, as illustrated in
Then, in step S510, the control unit 316 determines whether the cache method determination is completed for all reusable objects. If the cache method determination is completed for all reusable objects (YES in step S510), the operation proceeds to step S516. In step S516, the cache method setting processing is ended. On the other hand, if the cache method determination is not yet completed for any of reusable object (NO in step S510), the control unit 316 subsequently performs the processing of step S511. In step S511, the control unit 316 sorts the reusable objects according to the object types. Examples of the object types include within-page-reusable object which can be reused within a page (within print page data). Examples of the object types further include within-job-reusable object which is valid within a job (within a corresponding print job). Examples of the object types further include global reusable object which is valid even outside a job (outside a corresponding print job). The fixed data 905 illustrated in
In step S512, the control unit 316 sets a flag (cache flag) for storing the global reusable object as the intermediate data 310 and the image data 312. The global reusable object is an object valid even outside the job, and therefore if only the image data 312 thereof is cached in the storage apparatus 315, it cannot be regenerated (reproduced) when the state of the printer engine unit 313 is changed. The control unit 316 solves this problem by not deleting the intermediate data 310, and storing both of the intermediate data 310 and the image data 312 into the storage apparatus 315. Therefore, the control unit 316 sets the cache flag for storing the intermediate data 310 and the image data 312 into the storage apparatus 315, and stores the cache flag into the storage apparatus 315. The state of the printer engine unit 313 is changed, for example, when a different printer engine is used, or various print settings (for example, paper size and print range) are changed for another print job.
In step S513, the control unit 316 determines whether there is an empty memory space (remaining capacity) in the storage apparatus 315. The within-job-reusable object is valid only within the job, and therefore it is deleted when the job is ended. Further, since the within-job-reusable object is valid within the job, it is expected that there are plenty of within-job-reusable objects. Therefore, caching all within-job-reusable objects into the storage apparatus 315 as the image data 312 may be impossible. Therefore, the control unit 316 operates to store the image data 312 into the storage apparatus 315 in descending order of the total RIP time (t) (in order of the priority) of reusable object calculated in step S509. In other words, if the control unit 316 determines that the within-job-reusable object can be stored into the storage apparatus 315 as the image data 312 (YES in step S513), the control unit 316 subsequently performs the processing of step S515. On the other hand, if the control unit 316 determines that the within-job-reusable object cannot be stored into the storage apparatus 315 as the image data 312 (NO in step S513), the control unit 316 subsequently performs the processing of step S514. In step S514, the control unit 316 sets a cache flag for storing the reusable object as the intermediate data 310, and stores the cache flag into the storage apparatus 315. In step S515, the control unit 316 sets a cache flag for storing the reusable object as the image data 312, and stores the cache flag into the storage apparatus 315.
Another possible method is to cache all of the within-job-reusable objects and the within-page-reusable objects in the print data as the intermediate data 310 (for example, the display list and the intermediate language) in the MFP 102. This method can reduce the occupancy of the storage area, but reusable objects having a complicated configuration (for example, logic rendering of a graphic) may take much time for conversion of the intermediate data 310 into the image data 312 (RIP). Therefore, the present exemplary embodiment employs the method of caching data with respect to a reusable object in consideration of the number of times of reference to the reusable object, and the RIP time of the reusable object in print data. In other words, it is possible to shorten a print time and prevent the constant depletion of the memory space in the MFP 102 by controlling whether a reusable object is cached as the intermediate data 310 or the image data 312. Data with respect to a reusable object is, for example, the intermediate data 310 and the image data 312.
Next, the page data generation processing will be described with reference to the flowchart illustrated in
In step S604, the control unit 316 determines whether the object determined as an object required to be processed in step S603 is a reusable object. The term “reusable object” refers to a repeatedly used object in the fixed data group 902 illustrated in
In step S605, the renderer unit 311 converts the intermediate data 310 generated in step S506 into the image data 312 (RIP). In step S606, the control unit 316 reads out the cache flag set in any of step S512, S514, and S515 from the storage apparatus 315. If the value of the cache flag is set to the value indicating “intermediate data 310 and image data 312”, subsequently, the operation proceeds to step S607. If the value of the cache flag is set to the value indicating “intermediate data 310”, subsequently, the operation proceeds to step S608. If the value of the cache flag is set to the value indicating “image data 312”, subsequently, the operation proceeds to step S609.
In step S607, the control unit 316 stores the intermediate data 310 and the image data 312 into the storage apparatus 315 according to the value of the cache flag. In step S608, the control unit 316 stores the intermediate data 310 into the storage apparatus 315 according to the value of the cache flag. In step S609, the control unit 316 stores the image data 312 into the storage apparatus 315 according to the value of the cache flag. On the other hand, in step S610, the interpreter unit 309 converts the non-reusable object into the intermediate data 310. Subsequently, in step S611, the renderer unit 311 converts the intermediate data 310 into image data 312 (RIP).
After the completion of the processing of step S607, S608, or S609, the control unit 316 reads out the data according to the type of the reusable object from the storage apparatus 315 to acquire the image data 312 of the reusable object. At this time, if the reusable object is a global reusable object, the read-out data is the intermediate data 310 or the image data 312. More specifically, if the control unit 316 detects that the state of the printer engine unit 313 experiences a change, the control unit 316 reads out the intermediate data 310. If the control unit 316 does not detect that the state of the printer engine unit 313 experiences a change, the control unit 316 reads out the image data 312. If the reusable object is a within-job-reusable object, the read-out data is the intermediate data 310 or the image data 312. If the reusable object is a within-page-reusable object, the read-out data is the image data 312. In the case that the control unit 316 reads out the intermediate data 310, the renderer unit 311 converts the read-out intermediate data 310 into the image data 312. Then, the control unit 316 generates page data by combining the image data 312 read-out or converted for each object as mentioned above, and the image data 312 converted in step S611, and then stores the generated page data into the storage apparatus 315.
Next, the details of the print processing will be described with reference to the flowchart illustrated in
In step S703, the control unit 316 reads out page data. Then, in step S704, the control unit 316 transmits the page data read out in step S703 to the printer engine unit 313 as a video signal, according to which the printer engine unit 313 prints the image on a paper. Then, the control unit 316 discharges the result of the printing by the printer engine unit 313 onto the paper discharge destination (the discharge tray 206 or 207). Subsequently, in step S705, the control unit 316 performs the cache deletion processing. In the cache deletion processing, if there is a no longer required object in the cache, the processing for deleting the object no longer required is performed. The details of the cache deletion processing will be described below with reference to the flowchart illustrated in
Now, the cache deletion processing will be described with reference to the flowchart illustrated in
In step S804, the control unit 316 determines whether the current page is the last page in the job. If the control unit 316 determines that the current page is the last page in the job (YES in step S804), the control unit 316 subsequently performs the processing of step S805. On the other hand, if the control unit 316 determines that the current page is not the last page in the job (NO in step S804), the operation proceeds to step S807. In step S807, the cache deletion processing is ended. In step S805, the control unit 316 determines based on the cache flag whether the objects used for the current print job contain any within-job-reusable object. If the control unit 316 determines that the objects used for the current print job contain a within-job-reusable object (YES in step S805), then the operation proceeds to step S806. In step S806, the control unit 316 deletes the data with respect to the within-job-reusable object stored in the storage apparatus 315. Subsequently, the operation proceeds to step S807 in which the cache deletion processing is ended. On the other hand, if the control unit 316 determines that the objects used for the current print job do not contain any within-job-reusable object (NO in step S805), the operation proceeds to step S807 in which the cache deletion processing is ended.
Next, the normal processing will be described with reference to the flowchart illustrated in
Further, the present invention can be also embodied by performing the following procedure. More specifically, a software (or program) capable of carrying out the functions of the above-described exemplary embodiment is supplied to a system or an apparatus through a network or various kinds of storage media, and a computer (or, for example, a CPU or micro processing unit (MPU)) of the system or the apparatus reads out and executes the program.
While the present invention has been described with reference to the exemplary embodiments, it is to be understood that the present invention is not limited to the disclosed exemplary embodiments. Further, the present invention can be also embodied by performing the following procedure. That is, a software (or program) capable of carrying out the functions of the above-described exemplary embodiments is supplied to a system or an apparatus through a network or various kinds of storage media, and a computer (or, for example, a CPU or an MPU) of the system or the apparatus reads out and executes the program. In such a case, the program, and the storage medium storing the program are included as being within the scope of the present invention. Further, it is obvious that the present invention is not limited to the disclosed exemplary embodiments, and a variety of modifications and applications can be made thereto within the scope of the appended claims.
While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all modifications, equivalent structures, and functions.
This application claims priority from Japanese Patent Application No. 2009-279829 filed Dec. 9, 2009, which is hereby incorporated by reference herein in its entirety.
Number | Date | Country | Kind |
---|---|---|---|
2009-279829 | Dec 2009 | JP | national |