Patent Publication Number: US-9852366-B1

Title: Image processing and error handling system and method for printing linearized and non-linearized portable document format (PDF) files

Description:
TECHNICAL FIELD 
     The present application in general relates to printing devices, and more specifically, to a PDF image forming system configured to interpret and print all PDF formats including non-linearized and linearized PDF formats at a designated printing speed and which has an error handling mechanism to improve error processing performance when an error happens during file receiving timing both for linearized and non-linearized PDF processing and avoid printing false error page which may occur during linear processing of a PDF file. 
     BACKGROUND 
     Portable Document Format (PDF) is a file format used to present and exchange documents independent of software, hardware, or operating system. A document converted to or saved as a PDF file generally has the option of being saved as a specific PDF standard. The PDF standard chosen is generally determined by the purpose for which the PDF document was created. 
     When printing a PDF file, a user may send PDF file data from a printer driver, using a network command (such as LPR) or USB printing. Printer firmware may need to handle all kinds of PDF formats such as PDF 1.2, 1.5, 1.7, as well as other PDF format types. For simplicity, PDF files may be defined as having two types of layouts: non-linearized and linearized. 
     Non-linearized PDF files may consume less disk space than linearized PDF files, though they may be slower to access because portions of the data required to assemble pages of the document may be scattered throughout the PDF file. Thus, printing a non-linearized PDF file may require the printer to wait until all the file data has been received because the important interpreting information may be located at the end of file. 
     Linearized PDF files (also called “optimized” or “web optimized” PDF files) may be constructed in a manner that enables them to be read in a Web browser plug-in without waiting for the entire file to download, since they are written to disk in a linear (as in page order) fashion. Linearized PDF files may contain a Linearization Parameter Dictionary in the beginning of the file to specify linearization information such as total file size (LSize), 1 st  page size (1stPgSize) as well as other linearization information. In the Linearized PDF file, both the interpreting information and the 1 st  page data are placed in the beginning of the file. Thus, printer firmware may start interpreting and printing the 1 st  page data of the linearized PDF file without having to wait to receive the whole page data. Thus, linearized PDF files generally are expected to have a better printing performance than non-linearized PDF files. 
     It is possible to convert a non-linearized PDF file to a linearized PDF file. However, due to the limitation of the printer system memory configuration and printing speed, adding a linearized PDF converter to the printer firmware may be costly and slow down the printer speed. Further, it is necessary to support both formats in printer firmware as in some situations it may be more desirable to print the PDF file as a non-linearized PDF file as oppose to a linearized PDF file. 
     Therefore, it would be desirable to provide a system and method that overcomes the above. The system and method can interpret and print all PDF formats including non-linearized and linearized PDF formats. The system and method provides a linearized PDF format detection and conversion mechanism in different devices in the pipeline base on different PDF printing flows. The system and method provides an error handling mechanism in stream data storage to improve error handling performance and in interpreting PDF file to avoid printing false error page. 
     SUMMARY 
     In accordance with one embodiment, a method of processing linearized and non-linearized Portable Document Format (PDF) files for printing is disclosed. The method comprises: determining by printer firmware if a printer driver detected that the PDF file is linearized; saving and processing stream data of the PDF file by the printer firmware when the printer firmware determines the printer driver detected that the PDF file is linearized; and determining by the printer firmware if the PDF file is linearized when the PDF file is unidentified as being linearized by the printer driver. 
     In accordance with one embodiment, a method of processing linearized and non-linearized Portable Document Format (PDF) files for printing is disclosed. The method comprises: obtaining by a printer driver a file size of the PDF file; determining by the printer driver if the PDF file is linearized if the PDF file is sent to print via the printer driver, linearizing the PDF file by the printer driver when the PDF file is non-linearized; adding printer command information to the PDF file by the printer driver; sending the printer command information by the printer driver to printer firmware; determining by printer firmware if the printer driver detected that the PDF file is linearized; saving stream data of the PDF file by the printer firmware when the printer firmware determines the printer driver detected that the PDF file is linearized; determining by the printer firmware if the PDF file is linearized when the PDF file is unidentified as being linearized by the printer driver, identifying a linearization error by the printer firmware; and identifying and processing printing errors during saving and interpreting stream data by the printer firmware in a parallel manner. 
     In accordance with one embodiment, a system for processing linearized and non-linearized Portable Document Format (PDF) files for printing is disclosed. The system has a printer driver receiving the PDF file when the PDF file is sent to print via the printer driver, determining if the PDF file is linearized, linearizing the PDF file when the PDF file is non-linearized, and adding printer command information to the PDF file when linearizing the PDF file. A printer firmware module determines if the printer driver detected that the PDF file is linearized, linearizes the PDF file when the PDF file is unidentified as being linearized by the printer driver, processes the PDF file as linearized when a size difference between a linearized specific file size of the PDF file and a first page file size of the PDF file is greater than a threshold size, processes the PDF file as non-linearized when the size difference between the linearized specific file size of the PDF file and the first page file size of the PDF file is less than a threshold size, and processes the PDF file as non-linearized when a linearized key string is unidentified in the first portion of the PDF file received, wherein the printer firmware identifies real and false linearization error and indentifies and processes printing errors in a parallel manner during saving and interpreting stream data. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present application is further detailed with respect to the following drawings. These figures are not intended to limit the scope of the present invention but rather illustrate certain attributes thereof. 
         FIG. 1  is a diagram of an exemplary system for printing linearized and non-linearized PDF files according to one aspect of the present application; 
         FIG. 2  is a simplified block diagram showing an illustrative computing device depicted in  FIG. 1  in accordance with one aspect of the present application; 
         FIG. 3  is a simplified block diagram showing an illustrative image forming device depicted in  FIG. 1  according to one aspect of the present application; 
         FIG. 4  is an exemplary embodiment of a flowchart depicting a method for printing linearized and non-linearized PDF files according to one aspect of the present application; 
         FIG. 5  is an exemplary embodiment of a flowchart depicting operation of an application tool used in the system of  FIG. 1  according to one aspect of the present application; 
         FIG. 6  is an exemplary embodiment of a flowchart depicting operation of a printer driver used in the system of  FIG. 1  according to one aspect of the present application; 
         FIG. 7  is an exemplary embodiment of a flowchart depicting operation of printer firmware used in the system of  FIG. 1  according to one aspect of the present application; 
         FIG. 8  is an exemplary embodiment of a flowchart depicting a operation of a linearized detector used in the printer firmware of  FIG. 7  according to one aspect of the present application; 
         FIG. 9  is an exemplary embodiment of a flowchart depicting non-linearized processing of the PDF file by the printer firmware of  FIG. 7  according to one aspect of the present application; 
         FIG. 10  is an exemplary embodiment of a flowchart depicting linearized processing of the PDF file by the printer firmware of  FIG. 7  according to one aspect of the present application; 
         FIG. 11  is an exemplary embodiment of a flowchart depicting operation of an error handling mechanism used in the printer firmware of  FIG. 7  according to one aspect of the present application; 
         FIG. 12A  is a prior art flowchart depicting error page printing by the printer firmware according to one aspect of the present application; and 
         FIG. 12B  is an exemplary embodiment of a flowchart depicting error page printing by the printer firmware of  FIG. 7  according to one aspect of the present application. 
     
    
    
     DESCRIPTION OF THE APPLICATION 
     The description set forth below in connection with the appended drawings is intended as a description of presently preferred embodiments of the disclosure and is not intended to represent the only forms in which the present disclosure can be constructed and/or utilized. The description sets forth the functions and the sequence of steps for constructing and operating the disclosure in connection with the illustrated embodiments. It is to be understood, however, that the same or equivalent functions and sequences can be accomplished by different embodiments that are also intended to be encompassed within the spirit and scope of this disclosure. 
     Embodiments of the exemplary system and method relates to a PDF image forming system and method configured to interpret and print all PDF formats including non-linearized and linearized PDF formats. The exemplary system and method provides a linearized PDF format detection and conversion mechanism in different devices in the printing pipeline wherein use of the detection and conversion mechanisms depend on the PDF print flows. The linearization detection in the printer firmware happens on the fly when receiving stream data and there is no need to wait after the PDF file is saved. This allows a decision to be made in an optimal manner. For a linearized PDF file, the exemplary system and method checks the size difference between a total file size and a first page size (1 st PgSize). If a size difference is detected above a predetermined value, linearized processing may be used to save file storage time spent for later pages. Otherwise, non-linearized processing may be used. In linearized PDF processing, two processing stages may be introduced to seek parallel processing for fast printing. The linearized stage1 may include saving the 1 st  page data to RAM and interpreting 1 st  page data so that 1 st  page printing does not need to wait until all the data is received. Linearized stage  2  may include saving and interpreting the later page data. As a result, 1 st  page printing speed may be optimized as well as the whole printing speed of the PDF document. The exemplary system and method may provide an error handling mechanism for interpreting PDF files that may avoid printing false error pages. The linearized specific error caused by un-known file size during the 1 st  page interpreting may be detected and non-linearized interpreter may be used to avoid print the error page. 
     Referring now to  FIG. 1 , a system  10  may be shown. The system  10  may be configured to interpret and print all PDF formats including non-linearized and linearized PDF files at an optimal printing speed. The system  10  provides a linearized PDF format detection and conversion mechanism in different devices in the print pipeline base on different PDF printing flows. The system  10  may have an error handling mechanism to avoid printing false error pages which may occur during linearization processing of a PDF file. The components of the system  10  may be coupled through wired or wireless connections. 
     The system  10  may have an image forming device  14 . The image forming device  14  may be any type of device having printing capabilities. For example, the image forming device  14  may be a printer, a copier, a fax machine, a multi-function peripheral including a scanner and one or more of functions of a copier, a facsimile device, and a printer and/or other types of rendering devices. The image forming device  14  may be used for outputting a print job as described below. 
     The image forming device  14  may be coupled to a print server  16 . The print server  16  may be used to connect the image forming device  14  to one or more computing devices  18  over a network  22 . The network  22  may be a local area network (LAN), a general wide area network (WAN), wireless local area network (WLAN) and/or a public network. The print server  16  may accept print jobs from the computing device  18  and may send the print jobs to the appropriate image forming device  14 . The print server  16  may queue the jobs locally as print jobs may arrive more quickly than the image forming device  14  may be able to print. Alternatively, or in addition to, the computing device  18  may be directly coupled to the image forming device  14 . 
     Individuals  12  may use one or more computing devices  18  to send print jobs to the image forming device  14 . The computing devices  18  may be a client computer system such as a desktop computer, handheld or laptop device, tablet, mobile phone device, server computer system, multiprocessor system, microprocessor-based system, network PCs, and distributed cloud computing environments that include any of the above systems or devices, and the like. The computing device  18  may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system as may be described below. In the embodiment shown in  FIG. 1 , the computing device  18  may be seen as a desktop/laptop computing system  18 A, a tablet device  18 B and a mobile phone device  18 C. However, this should not be seen in a limiting manner as any computing device  18  described above may be used. 
     The computing devices  18  may be loaded with an operating system. The operating system of the computing device  18  may manage hardware and software resources of the computing device  18  and provide common services for computer programs running on the computing device  18 . The computing device  18  may be loaded with a linear conversion module  20 . The linear conversion module  20  may convert non-linear PDF files to linear PDF files as will be described below. 
     Referring now to  FIG. 2 , the computing device  18  may be described in more detail in terms of the machine elements that provide functionality to the systems and methods disclosed herein. The components of the computing device  18  may include, but are not limited to, one or more processors or processing units  30 , a system memory  32 , and a system bus  34  that couples various system components including the system memory  32  to the processor  30 . The computing device  18  may typically include a variety of computer system readable media. Such media may be chosen from any available media that is accessible by the computing device  18 , including non-transitory, volatile and non-volatile media, removable and non-removable media. The system memory  32  could include one or more personal computing system readable media in the form of volatile memory, such as a random access memory (RAM)  36  and/or a cache memory  38 . By way of example only, a storage system  40  may be provided for reading from and writing to a non-removable, non-volatile magnetic media device typically called a “hard drive”. 
     The system memory  32  may include at least one program product/utility  42  having a set (e.g., at least one) of program modules  44  that may be configured to carry out the functions of embodiments of the invention. The program modules  44  may include, but is not limited to, an operating system, one or more application programs, other program modules, and program data. Each of the operating systems, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. The program modules  44  generally carry out the functions and/or methodologies of embodiments of the invention as described herein. For example, the program modules  44  may have the linear conversion module  20 . In accordance with one embodiment, the linear conversion module  20  may form part of a printer driver stored in the system memory  32  of the computing device  18 . 
     The computing device  18  may communicate with one or more external devices  46  such as a keyboard, a pointing device, a display  48 , or any similar devices (e.g., network card, modern, etc.). The display  48  may be a Light Emitting Diode (LED) display, Liquid Crystal Display (LCD) display, Cathode Ray Tube (CRT) display and similar display devices. The external devices  46  may enable the computing device  18  to communicate with the image forming device  14  ( FIG. 1 ). Such communication may occur via Input/Output (I/O) interfaces  50 . Alternatively, the personal computing system  18 A may communicate with one or more networks  22  ( FIG. 1 ) such as a local area network (LAN), a general wide area network (WAN), and/or a public network via a network adapter  52 . The computing device  18  may be coupled to the one or more networks via a wired or wireless connection. As depicted, the network adapter  52  may communicate with the other components of the computing device  18  via the bus  34 . 
     As will be appreciated by one skilled in the art, aspects of the disclosed invention may be embodied as a system, method or process, or computer program product. Accordingly, aspects of the disclosed invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module,” or “system.” Furthermore, aspects of the disclosed invention may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon. 
     Any combination of one or more computer readable media (for example, storage system  40 ) may be utilized. In the context of this disclosure, a computer readable storage medium may be any tangible or non-transitory medium that can contain, or store a program (for example, the program product  42 ) for use by or in connection with an instruction execution system, apparatus, or device. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. 
     Referring now to  FIG. 3 , the image forming device  14  may be described in more detail in terms of the machine elements that provide functionality to the systems and methods disclosed herein. The components of the image forming device  14  may include, but are not limited to, one or more processors or processing units  60 , a system memory  62 , and a system bus  63  that may couple various system components including the system memory  62  to the processor  60 . The image forming device  14  may typically include a variety of computer system readable media. Such media could be chosen from any available media that is accessible by the image forming device  14 , including non-transitory, volatile and non-volatile media, removable and non-removable media. The system memory  62  could include one or more image forming device readable media in the form of volatile memory, such as a random access memory (RAM) and/or a cache memory. By way of example only, the system memory  62  may be provided for reading from and writing to a non-removable, non-volatile magnetic media device typically called a “hard drive”. 
     The system memory  62  may include at least one program product/utility  64  having a set (e.g., at least one) of program modules  66  that may be configured to carry out the functions of embodiments of the invention. The program modules  66  may include, but is not limited to, an operating system, one or more application programs, other program modules, and program data. Each of the operating systems, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. The program modules  66  may include procedures such as a page converter, rasterizer, compression code, page print scheduler, print engine manager, and similar printing applications (i.e., printer firmware). The program modules  66  generally carry out the functions and/or methodologies of embodiments of the invention as described herein. 
     The image forming device  14  may have one or more communication modules  68 . The communication modules  68  may allow the image forming device  14  to communicate with one or more networks (i.e., network  22  shown in  FIG. 1 ) such as a local area network (LAN), a general wide area network (WAN), wireless local area network (WLAN) and/or a public network. In accordance with one embodiment, the communication modules  68  may include a network communication processing unit  70 A coupled to a network communication interface  70 B. The network communication processing unit  70 A and the network communication interface  70 B may allow the image forming device  14  to communicate with one or more networks  22 . These networks  22  may be a local area network (LAN), a general wide area network (WAN), a wireless local area network, a public network, a cellular network as well as other type of networks. The communication modules  68  may include a near field communication processing unit  72 A coupled to a near field communication interface  72 B. The near field communication processing unit  72 A and the near field communication interface  72 B may allow the image forming device  14  to communicate with other electronic devices located near the image forming device  14  using Bluetooth, infrared or similar wireless communication protocols. 
     The image forming device  14  may include an operation panel  74 . The operation panel may include a display unit  76  and an input unit  78  for facilitating human interaction with the image forming device  14 . The display unit  76  may be any electronic video display, such as a LCD display, LED display and similar display types. The input unit  78  may include any combination of devices that allow users to input information into the operation panel  74 , such as buttons, a keyboard, switches, and/or dials. In addition, the input unit  78  may include a touch-screen digitizer overlaid onto the display unit  76  that can sense touch and interact with the display unit  76 . 
     As will be appreciated by one skilled in the art, aspects of the disclosed invention may be embodied as a system, method or process, or computer program product. Accordingly, aspects of the disclosed invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module,” or “system.” Furthermore, aspects of the disclosed invention may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon. 
     Any combination of one or more computer readable media (for example, system memory  62 ) may be utilized. In the context of this disclosure, a computer readable storage medium may be any tangible or non-transitory medium that can contain, or store a program (for example, the program module  66 ) for use by or in connection with an instruction execution system, apparatus, or device. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. 
     Referring now to  FIGS. 1-12B , operation of the system  10  in accordance with one exemplary embodiment may be seen. As shown in  FIG. 4 , operation of the system  10  may be based on how the PDF file is being sent to the image forming device  14 . The operation of the system  10  may be divided into two process flows. Flow  1  may be defined as when a PDF document is opened in an application tool such as Adobe® Reader, Adobe® Pro, Microsoft® Office and the like and is sent to print via a printer driver. Flow  2  may be defined as when a PDF document is directly sent to print via network or USB printing. 
     In Flow  1 , a PDF application tool may be used to open a PDF document as shown in  101 . As may be seen in  FIG. 5 , the individual  12  who opened the PDF file in the application tool may need to determine if the application tool contains a linearized PDF converter as shown in  101 A. Some application tools such as Acrobat Pro, Microsoft Word, and the like, may have file saving options which may allow the individual  12  to save the PDF file under a linearized PDF file standard. Thus, these application tools may allow the individual  12  to convert a non-linearized PDF file to a linearized PDF file inside the application tool. If the application tool has a linearized PDF converter, the individual  12  should linearize the PDF file as shown in  101 B by saving the PDF file as a linearized PDF file. Saving the PDF file as a linearized PDF file may optimize the printing performance of the PDF file since the image forming device  14  may start interpreting and printing the 1 st  page data of the PDF file without having to wait to receive the whole page data. Linearizing the PDF file in the application tool may further allow a linearized process flow for later printing pipeline uses. However, some application tools such as Adobe® Reader may not provide a linearized PDF converter. Thus, if the PDF file is a non-linearized PDF file, the PDF file may remain a non-linearized PDF file as shown in  101 C. 
     The data from the PDF file may be sent to a printer driver of the computing device  18  as shown in  102  ( FIG. 4 ). As may be seen in  FIG. 6 , the printer driver may receive the data from the PDF file as shown in  102 A. The printer driver may review the data to check the PDF file size as shown in  102 B. This information may be used by the printer driver as well as firmware stored in the memory  62  ( FIG. 3 ) of the image forming device  14  ( FIG. 1, 3 ) as will be discussed below. 
     The PDF data may be sent to the linearized PDF converter  20  ( FIG. 1, 2 ) of the printer driver as shown in  102 C. The linearized PDF converter  20  of the printer driver my review the PDF date to make a determination of whether the PDF file is linearized or non-linearized as shown in  102 D. If the PDF file is a non-linearized PDF file, linearized PDF converter  20  of the printer driver may linearize the PDF file as shown in  102 E. 
     The printer driver may have a Print Job Language (PJL) command module as shown in  102 F. The PJL command module may be used to generate PJL commands. For example, the PJL command module may generate PJL commands for the file size and linearization information. In accordance with one embodiment, if the linearized PDF converter  20  of the printer driver linearizes the PDF file, the PJL command module may send the following PJL commands to printer firmware in the image forming device  14 :
         @PJL SET LPARM:PDF KLINEARIZEDPDF=YES   @PJL SET LPARM:PDF KFILESIZE=PDF FILE SIZE       

     If the PDF file is a linear PDF file, the PDF file may be sent directly to the PJL command module as shown in  102 E without passing though linearized converter  20 . After the PJL commands are generated, the PDF file, which is already linearized, may be sent to the image forming device  14  as shown in  103  ( FIG. 4 ). In accordance with one embodiment, the PJL command module may send the following PJL commands to printer firmware in the image forming device  14 :
         @PJL SET LPARM:PDF KLINEARIZEDPDF=NO   @PJL SET LPARM:PDF KFILESIZE=PDF FILE SIZE       

     As may be seen in  FIG. 4 , for flow  2  printing, the PDF file may be sent directly to the image forming device  14  as shown in  103 . Since in flow  2  the PDF document is directly sent to print via network or USB printing, flow  2  does not use the application tool or printer driver. Thus, in flow  2 , printer firmware in the image forming device  14  may need to handle all input formats. 
     The printer firmware may be used for both flow  1  and flow  2 . As shown in  FIG. 7 , the operation of the printer firmware of the image forming device  14  as shown in  103  ( FIG. 4 ) may be seen. The printer firmware of the image forming device  14  may perform a linearized detection of the PDF file received as shown in  301 . The printer firmware may determine if the PDF file is linearized as shown in  302 . The printer firmware may check to see if any PJL commands have been received. In accordance with one embodiment, the printer firmware may check the PJL KLINEARIZEDPDF setting to find out if a linearization check was done in the printer driver or not. If a linearization check is done in the printer driver, the printer firmware may start saving stream data based on the KLINEARIZEDPDF setting, otherwise, the printer firmware may perform the linearization detection to determine the PDF file type as shown in  301 . 
     The printer firmware may start to detect the linearization while it is receiving stream data instead of after saving all of the stream data into the image forming device  14 . This may allow the image forming device  14  to optimize the speed to start 1 st  page printing. As shown in  FIG. 8 , the image forming device  14  may start to receive the stream data. The printer firmware may determine if the image forming device  14  has received 1024 bytes of stream data as shown  301 B. If the less than 1024 bytes of stream data have been received, the image forming device  14  may continue to receive the stream data. The printer firmware may start to do linearized detection after receiving 1024 bytes of stream buffer (Per PDF specification, the linearization parameter dictionary should be located within 1024 bytes). Linearized detection may occur by using the stream buffer and reviewing the data to search for “/Linearized” key words and parameter information (i.e., linearized key string) contained within the linearization parameter dictionary as shown in  301 C. If the linearized key string is not found, the PDF file is a non-linearized PDF file as shown in  301 D. If the string is found, the printer firmware may try and interpret the linearization parameter directory as shown in  302 E. The printer firmware may try to interpret the linearized dictionary to see if a PJL specified file size (FileSize) is known as shown in  302 F. If the FileSize is known, the printer firmware may compare the linearized specified file size (LSize) to the FileSize as shown in  302 G. If the LSize is equal to the FileSize, the PDF file may be defined as a linearized PDF file as shown in  302 H. Otherwise, the PDF file may be defined as a non-linearized PDF file as shown in  301 D. If the FileSize is unable to be determine in no printer driver situation, the PDF file may still be defined as a linearized PDF file as shown in  302 H. 
     Referring back to  FIG. 7 , if the PDF file is defined as a non-linearized PDF file, non-linearized processing may be applied to the PDF file as shown in  305 . As may be seen in  FIG. 9 , for non-linearized processing of the PDF file, the whole PDF file is saved in system memory  62  of the image forming device  14  as shown in  501 . Once the PDF file is saved, it is interpreted and print data is generated as shown in  502 . 
     If the PDF file is defined as a linearized PDF file, the firmware of the image forming device  14  may check the size difference between LSize and 1stPgSize which are specified by linearization parameter dictionary as shown in  303 . If the size difference between LSize and 1stPgSize is bigger than a predetermined threshold size (ThresholdSize), linearized processing may be applied to the PDF file as shown in  304 . If the size difference between LSize and 1stPgSize is smaller than a predetermined ThresholdSize, non-linearized processing may be applied as shown  305 . Non-linearized processing may be applied since when the size difference is smaller than a predetermined threshold value, there is no need to have two (2) stage processing as may be applied to linearized processing as disclosed below since the time savings for printing may be minimal. 
     For PDF files identified as linearized, linearized processing may be performed as shown in  304  of  FIG. 7 . As may be seen in  FIG. 10  for 304, stream data may be sent to a stream storage task generator as may be seen in  401 . The stream storage task generator may divide the linearized processing into two stages. Stage  1  may involve 1 st  page stream storage and interpreting. Stage  2  may be involved with storage and interpreting of later pages. As may be seen in  FIG. 10 , stage  1  and stage  2  may be processed in a parallel way. This may improve the 1 st  page printing speed significantly as it does not need to wait until all data is saved. 
     In accordance with one embodiment, stage  1  may involve 1 st  page stream storage as shown in  402 . While the 1 st  page stream data is being processed as shown in  404 , stream storage of later pages may be done as shown in  403  in a parallel manner. The later page data may then be interpreted as shown in  405 . 
     In accordance with one embodiment, the stage  1  1 st  page stream data may be saved in the RAM memory at fast speed even if the system memory device is a hard drive. This is because accessing RAM may be faster than accessing the hard drive. However, when stage  1  1 st  page stream data size is bigger than available RAM size, the 1 st  page stream data may be saved into the hard drive or other memory storage device. The RAM memory buffer may be used directly by the linearized 1 st  page interpreter, which may reduce temp memory buffer that is required by using the hard drive. 
     In  404 , the linearized stage  1  interpreter may utilize interpreting information such as XREF table and page information directly from the linearization parameter dictionary. This may result in faster interpreting speed compared to the non-linearized interpreter shown in  502 . 
     If any error happens during saving stream data and interpreting, an error page may be printed to notify the individual  20  with error information such as no memory, lack of fonts etc. However, there may be a special case which produces a false error due to linearization processing. This is the case where the size specified by the linearization parameter dictionary does not match the real file size. The printer firmware of the present application may provide an interpreter error handler for the above error case without printing false error page as shown in  306 . 
     As may be seen in  FIG. 11 , operation of the interpreter error handler is shown. The interpreter error handler determines if there is an interpreter error as may be seen in  601 . If there is no interpreter error, no error message is returned as shown in  609 . When interpreter error handler identifies an error, the interpreter error handler determines if it is in linearized Stage  1  as shown in  602 . If it is not, an error message is returned as shown in  608 . If it is a linearized stage  1  error, the interpreter error handler determines the file size setting as shown in  604 . If file size is known already, then the interpreter error handler checks if file size matches linearization parameter dictionary specified size LSize as shown in  605 . If it does match, then the error is a real error and an error is returned as shown in  608 . Otherwise, it is False Linearized Error. In this situation, printing of an error page may be aborted as shown in  606  and a return of a false linearized error maybe reported as shown in  607 . If file size is unknown, the printer firmware may wait until saving stage  2  stream data is done as shown in  603  in order to get the file size. If fileSize matches LSize, a true PDF interpreting error may be returned as shown in  608 . 
     Referring to  FIG. 12A , presently, when an error is detected, the error page may be printed after stream data storage is completed as shown in  700 . However, the printer firmware may be configured so that the PDF interpreter task and PDF stream storage task use different task threads as shown in  800  of  FIG. 12B . In case an error is recorded before stream storage data has been completed, two separate task threads may be used to handle error page printing and consuming the rest of the stream data at the same time. Thus, stream storage and error page printing may be processed in parallel. This may improve error job printing performance as it may be done more timely as opposed to the prior art where the error page may be printed only after stream data storage is completed. 
     The foregoing description is illustrative of particular embodiments of the invention, but is not meant to be a limitation upon the practice thereof. The following claims, including all equivalents thereof, are intended to define the scope of the invention.