Patent Description:
Cloud print services that use a cloud have been proposed. Each cloud print service provides a logical printer, and a print job submitted to the logical printer is executed by a physical printer associated with the logical printer (<CIT>). When a print job is canceled in the physical printer, print data specified by the print job is canceled in the physical printer. <CIT> proposes that a receiving apparatus make up for a lost portion of image data transmitted thereto when the image data is discarded. There are cases where, after a print job is canceled in the physical printer, the same print job is executed again. In such a case, if the print data is downloaded again from the beginning, it takes a longer time before print is started, and the communication amount also increases. <CIT> is further directed at a printing system for preventing that partial print data, which has already been processed and printed, is processed and printed again even if an error occurs in the printer.

Some aspects of the present disclosure provide a technique for effectively utilizing downloaded print data. The present invention in its first aspect provides a printing apparatus as specified in claims <NUM> to <NUM>. The present invention in its second aspect provides a program as specified in claim <NUM>. The present invention in its third aspect provides a method as specified in claim <NUM>.

An exemplary configuration of a print system according to a first embodiment will be described with reference to <FIG>. The print system includes an information processing apparatus <NUM>, printing apparatuses <NUM> and <NUM>, and a print server <NUM>, for example. The number of constituent elements of the print system is not limited to the example in <FIG>. In addition, the print system may include a constituent element that is not shown in <FIG>.

The information processing apparatus <NUM> and the printing apparatus <NUM> are connected to the same local area network (LAN) <NUM>. The LAN <NUM> may be a wired LAN or a wireless LAN, or may be a combination thereof. The LAN <NUM> is connected to a wide area network <NUM> (for example, the Internet) via a firewall <NUM>. The printing apparatus <NUM> and the print server <NUM> are also connected to the wide area network <NUM>. The information processing apparatus <NUM> and the printing apparatus <NUM> can communicate with each other within the LAN <NUM> (that is to say, without using the wide area network <NUM>). In addition, the information processing apparatus <NUM> and the printing apparatus <NUM> can communicate with the print server <NUM> through the LAN <NUM>, the firewall <NUM>, and the wide area network <NUM>. The printing apparatus <NUM> may be connected to the wide area network <NUM> through a LAN or a cellular network (for example, a network that complies with the fourth-generation communication standard (<NUM>) or the fifth-generation communication standard (<NUM>)). The information processing apparatus <NUM> may also be connected to the wide area network <NUM> through a cellular network.

The printing apparatuses <NUM> and <NUM> have a print function of performing printing based on a print job. The printing apparatuses <NUM> and <NUM> may have at least one of a scanner function or a facsimile function in addition to the print function. A printing apparatus that has a plurality of functions in this manner may also be referred to as a multifunction printer (MFP). Alternatively, the printing apparatuses <NUM> and <NUM> may be dedicated machines (SFPs: Single Function Peripherals) that have the print function only. Printing may be printing that is performed onto a sheet-like recording medium such as paper, or may be formation of a three-dimensional object (so-called three-dimensional printing).

The print server <NUM> provides a print service for transmitting a print job to any printing apparatus (for example, the printing apparatus <NUM>), in accordance with a print job generated by the information processing apparatus <NUM>. The print server <NUM> provides a logical printer to the information processing apparatus <NUM>, and accepts a print job for the logical printer, for example. The logical printer is a virtual printing apparatus (for example, a printer object) provided by the print server <NUM>. The logical printer can also be referred to as a "cloud printer". The information processing apparatus <NUM> can also generate a print queue for the logical printer in a similar manner to the printing apparatuses <NUM> and <NUM>. Compared with the logical printer, a physical printing apparatus such as the printing apparatus <NUM> or <NUM> can also be referred to as a "physical printer". The physical printer can also be referred to as a "local printer" when connected to the same LAN connected to an information processing apparatus that submits a print job. In the following description, the logical printer and the physical printers are simply referred to as "printers" in a collective manner.

The print server <NUM> may be a server in an on-premise environment connected to the wide area network <NUM>, or may be a server in a cloud computing environment (hereinafter, simply referred to as a "cloud"). A print service that is provided by the print server <NUM> in the cloud may also be referred to as a cloud print service (hereinafter, referred to as a "CPS"). Universal Print (registered trademark) provided by Microsoft (registered trademark) corporation is an example of the cloud print service. In the following description, a case will be described in which the print server <NUM> is in a cloud. However, the following description also applies to a case where the print server <NUM> is in an on-premise environment.

The information processing apparatus <NUM> provides a print function to the user of the information processing apparatus <NUM>. The information processing apparatus <NUM> may designate a physical printer (for example, the printing apparatus <NUM>) connected to the sane LAN <NUM>, as an output destination, or may designate a logical printer provided by the print server <NUM>, as an output destination. When the logical printer is designated as an output destination, a physical printer (for example, the printing apparatus <NUM>) associated with the logical printer performs printing. The information processing apparatus <NUM> that uses CPS may also be referred to as a "client" or a "client terminal". Printing that is performed by submitting a print job to the logical printer can also be referred to as "cloud printing". Printing that is performed through cloud printing may be executed by the printing apparatus <NUM> connected to the same LAN <NUM> to which the information processing apparatus <NUM> is connected, or may also be executed by the printing apparatus <NUM> that is not connected to the LAN <NUM>. Printing that is performed by directly (that is to say, within the LAN) submitting a print job to a physical printer can be referred to as "local print".

An exemplary hardware configuration of the computer <NUM> according to the present embodiment will be described with reference to <FIG>. The computer <NUM> may be used as the information processing apparatus <NUM>, or may be used as the print server <NUM>. The computer <NUM> may include the constituent elements shown in <FIG>.

A central processing unit (CPU) <NUM> is a general-purpose processing circuit for controlling overall operations of the computer <NUM>. A random access memory (RAM) <NUM> is a volatile memory circuit, and is used as a temporary storage region such as a work area for processing that is performed by the CPU <NUM>. A read-only memory (ROM) <NUM> is a non-volatile memory circuit, and stores programs and data that are used for processing that is performed by the CPU <NUM>. A storage device <NUM> is a non-volatile storage device, and stores programs and data that are used for processing that is performed by the CPU <NUM>. The storage device <NUM> may be a hard disk drive (HDD) or a solid state drive.

(SSD), for example. The storage device <NUM> may also be referred to as a "secondary storage unit". Operations that are performed by the computer <NUM> may be realized by the CPU <NUM> executing programs loaded from the storage device <NUM> to the RAM <NUM>.

An input interface (I/F) <NUM> is an I/F for transmitting/receiving signals to/from an input device <NUM>. The input device <NUM> is a device for obtaining input from the user of the computer <NUM>. The input device <NUM> may be a keyboard, a touch panel, a microphone, a mouse, or any combination thereof, for example. An output I/F <NUM> is an I/F for transmitting/receiving signals to/from an output device <NUM>. The output device <NUM> is a device for providing information to the user of the computer <NUM>. The output device <NUM> may be a display, a speaker, or any combination thereof, for example. A network I/F <NUM> is an I/F for communicating with an external apparatus of the computer <NUM>. The CPU <NUM>, the RAM <NUM>, the ROM <NUM>, the storage device <NUM>, the input I/F <NUM>, the output I/F <NUM>, and the network I/F <NUM> are connected to a system bus <NUM>. In the example in <FIG>, the input device <NUM> and the output device <NUM> are illustrated as devices different from the computer <NUM>. Alternatively, the computer <NUM> may include the input device <NUM> and the output device <NUM>.

An exemplary functional configuration of the print server <NUM> will be described with reference to <FIG>. The print server <NUM> may include the functional units shown in <FIG>. The print server <NUM> may include a functional unit that is not shown in <FIG>. The functional units in <FIG> may be realized by the CPU <NUM> executing programs loaded to the RAM <NUM>. Alternatively, some or all of the functional units in <FIG> may be realized by a dedicated processing circuit such as an application specific integrated circuit (ASIC).

A registration control unit <NUM> performs processing for registering a logical printer. The registration control unit <NUM> generates a logical printer associated with a physical printer in accordance with a registration start request from a printing apparatus, and registers the generated logical printer in printer information <NUM>, for example. The logical printer registered in the printer information <NUM> is recognized as a printer by the information processing apparatus <NUM>. The physical printer associated with the logical printer may be a physical printer that performs printing in accordance with a print job submitted to the logical printer. The logical printer may be associated with only one physical printer. The physical printer may be associated with only one logical printer, or may be associated with a plurality of logical printers.

A print control unit <NUM> performs processing related to a print job for the logical printer. The print control unit <NUM> receives a print job for the logical printer, from the information processing apparatus <NUM>, and based on this, transmits the print job to the physical printer associated with the logical printer, for example. In addition, the print control unit <NUM> may control an event related to the print job. An event related to a print job may include receiving a print job, for example. In response to an event request received from the physical printer, the print control unit <NUM> may return an event related to the physical printer.

A printer management unit <NUM> manages information related to the logical printer registered in the print server <NUM>, as the printer information <NUM>. The printer information <NUM> includes capability information of the physical printer associated with the logical printer, a cloud printer ID uniquely allocated to the logical printer, information regarding a print queue in which a print job is spooled, and the like.

A job management unit <NUM> manages information regarding a print job received from the information processing apparatus <NUM>, as job information <NUM>. The job information <NUM> includes information regarding a print job and the state of the print job, print data specified by the print job, and the like.

A storage control unit <NUM> stores information to the RAM <NUM> or the storage device <NUM>, and reads out information from the RAM <NUM> or the storage device <NUM>, in accordance with an instruction from another functional unit. According to the present embodiment, the storage control unit <NUM> stores the printer information <NUM> and the job information <NUM>.

An exemplary functional configuration of the information processing apparatus <NUM> will be described with reference to <FIG>. The information processing apparatus <NUM> may include the functional units shown in <FIG>. The information processing apparatus <NUM> may include a functional unit that is not shown in <FIG>. The functional units in <FIG> may be realized by the CPU <NUM> executing programs loaded to the RAM <NUM>. Alternatively, some or all of the functional units in <FIG> may be realized by a dedicated processing circuit such as an ASIC.

An input obtaining unit <NUM> obtains input from the user of the information processing apparatus <NUM> using the input I/F <NUM>. An information output unit <NUM> outputs information to the user of the information processing apparatus <NUM> using the output I/F <NUM>.

A registration control unit <NUM> performs processing for registering a logical printer to the print server <NUM>. A print control unit <NUM> performs processing related to printing that is performed by a printer. The print control unit <NUM> may transmit a print job to the logical printer registered in the print server <NUM>, in accordance with a print instruction from the user of the information processing apparatus <NUM>, for example. The print control unit <NUM> may transmit a print job directly (that is to say, in the same LAN) to a physical printer in accordance with a print instruction from the user of the information processing apparatus <NUM>.

A printer management unit <NUM> manages information regarding a printer to which the information processing apparatus <NUM> can submit a print job, as printer information <NUM>. The printer information <NUM> includes capability information of the printer and the like.

A storage control unit <NUM> stores information to the RAM <NUM> or the storage device <NUM> and reads out information from the RAM <NUM> or the storage device <NUM> in accordance with an instruction from another functional unit. According to the present embodiment, the storage control unit <NUM> stores the printer information <NUM>.

An exemplary hardware configuration of a printing apparatus <NUM> according to the present embodiment will be described with reference to <FIG>. The printing apparatus <NUM> may be used as the printing apparatus <NUM>, or may be used as the printing apparatus <NUM>. The printing apparatus <NUM> may include the constituent elements shown in <FIG>. The printing apparatus <NUM> is a physical printing apparatus, and thus is also referred to as a "physical printer".

A CPU <NUM> is a general-purpose processing circuit for controlling overall operations of the printing apparatus <NUM>. A RAM <NUM> is a volatile memory circuit, and is used as a temporary storage region such as a work area for processing that is performed by the CPU <NUM>. AROM <NUM> is a non-volatile memory circuit, and stores programs and data used for processing that is performed by the CPU <NUM>. A storage device <NUM> is a non-volatile storage unit, and stores programs and data that are used for processing that is performed by the CPU <NUM> (for example, a print job, image data, and setting information). The storage device <NUM> may be an HDD or an SSD, for example. The storage device <NUM> may also referred to as a "secondary storage unit". Operations that are performed by the printing apparatus <NUM> may be realized by the CPU <NUM> executing programs loaded from the storage device <NUM> to the RAM <NUM>.

A printer I/F <NUM> is an I/F for transmitting/receiving signals to/from a printer engine <NUM>. The printer engine <NUM> performs printing based on a signal (for example, image signals or a print command) supplied from a control unit <NUM> through the printer I/F <NUM>. Printing may be electrophotographic printing in which toner is transferred onto paper and is fixed, may be inkjet printing that is performed by discharging ink to paper, or may be three-dimensional printing.

A scanner I/F <NUM> is an I/F for transmitting/receiving signals to/from a scanner engine <NUM>. The scanner engine <NUM> supplies signals (for example, image signals) obtained by reading a document, to the control unit <NUM> via the scanner I/F <NUM>. The CPU <NUM> may process the image signals supplied from the scanner engine <NUM>, and supply record image signals obtained as a result of the processing, to the printer engine <NUM>. In addition, the CPU <NUM> may generate image data based on the image signals supplied from the scanner engine <NUM>, and transmit the generated image data to an external apparatus.

An operation unit I/F <NUM> is an I/F for transmitting/receiving signals to/from an operation unit <NUM>. The operation unit <NUM> is a device that obtains input from the user of the printing apparatus <NUM>, and provides information to the user of the printing apparatus <NUM>. The operation unit <NUM> may be a display panel (for example, a liquid crystal display), a speaker, a touch panel, a keyboard, buttons, or a touch screen, or may be constituted by any combination thereof, for example.

A network I/F <NUM> is an I/F for communicating with an external apparatus of the printing apparatus <NUM>. The control unit <NUM> is constituted by the CPU <NUM>, the RAM <NUM>, the ROM <NUM>, the storage device <NUM>, the printer I/F <NUM>, the scanner I/F <NUM>, the operation unit I/F <NUM>, and the network I/F <NUM>. The constituent elements included in the control unit <NUM> are connected to a system bus <NUM>.

An exemplary functional configuration of the printing apparatus <NUM> will be described with reference to <FIG>. The printing apparatus <NUM> may include the functional units shown in <FIG>. The printing apparatus <NUM> may include a functional unit that is not shown in <FIG>. The functional units in <FIG> may be realized by the CPU <NUM> executing programs loaded to the RAM <NUM>. Alternatively, some or all of the functional units in <FIG> may also be realized by a dedicated processing circuit such as an ASIC.

An input obtaining unit <NUM> obtains input from the user of the printing apparatus <NUM> using the operation unit I/F <NUM>. An information output unit <NUM> outputs information to the user of the printing apparatus <NUM> using the operation unit I/F <NUM>. An image processing unit <NUM> renders a print job to produce printing image data. A printing processing unit <NUM> prints the image data obtained by the image processing unit <NUM> rendering the print job.

A registration control unit <NUM> performs processing for registering a logical printer associated with the printing apparatus <NUM> to the print server <NUM>. A printer management unit <NUM> manages information regarding the printing apparatus <NUM> as printer information <NUM>. The printer information <NUM> may include, for example, the state of the printing apparatus <NUM>, the capability of the printing apparatus <NUM>, and a cloud printer ID uniquely allocated by the print server <NUM> to the logical printer associated with the printing apparatus <NUM>. In addition, the printer information <NUM> may include local printer IDs for the information processing apparatus <NUM> to identify printing apparatuses within the same LAN <NUM>.

A cloud print (CP) control unit <NUM> performs processing related to cloud printing. The CP control unit <NUM> may transfer print data received from the print server <NUM>, to the image processing unit <NUM>, for example. In addition, the CP control unit <NUM> may transmit an event request to the print server <NUM>.

A local print (LP) control unit <NUM> performs processing related to local printing. The LP control unit <NUM> may respond to a printer search performed by the information processing apparatus <NUM>, for example. In addition, the LP control unit <NUM> may transfer print data received directly from the information processing apparatus <NUM>, to the image processing unit <NUM>.

A job management unit <NUM> manages information regarding a print job as job information <NUM>. The job information <NUM> may include a processing state and processing result of the print job. Furthermore, the job management unit <NUM> manages information regarding the state of download of print data specified by the print job, as download (DL) state information <NUM>. The DL state information <NUM> will be described later in detail.

A timer control unit <NUM> performs time-related control. The timer control unit <NUM> may perform notification in accordance with expiration of a set timer, and respond to an inquiry about a current time made by a functional unit of the printing apparatus <NUM>, for example. The timer may be able to be set in units of seconds, for example.

A storage control unit <NUM> stores information to the RAM <NUM> or the storage device <NUM> and reads out information from the RAM <NUM> or the storage device <NUM> in accordance with an instruction from another functional unit. According to the present embodiment, the storage control unit <NUM> stores the printer information <NUM>, the job information <NUM>, and the DL state information <NUM>. The storage control unit <NUM> may manage data as a file system. The storage control unit <NUM> may sort pieces of data into the storage device <NUM> that is a non-volatile region and the RAM <NUM> that is a volatile region. The storage control unit <NUM> may store the printer information <NUM> and the job information <NUM> to the non-volatile region, for example.

A sequence of overall processing for performing cloud printing will be described with reference to <FIG>. The example in <FIG> illustrates a case where the printing apparatus <NUM> is registered in the print server <NUM>, and a print job is submitted from the information processing apparatus <NUM> to a logical printer associated with the printing apparatus <NUM>. Registering the printing apparatus <NUM> to the print server <NUM> may be registering the logical printer associated with the printing apparatus <NUM> to the print server <NUM>. The printing apparatus <NUM> may be the printing apparatus <NUM> in <FIG>, for example, or may be the printing apparatus <NUM>. Communication may be performed using Internet Printing Protocol (IPP). IPP is stipulated in PWG5100. <NUM>, RFC3995, RFC3996, and the like.

In step S701, the registration control unit <NUM> of the printing apparatus <NUM> transmits a printer registration request to the print server <NUM> in order to request that the printing apparatus <NUM> be registered in the print server <NUM>, in accordance with an instruction from the user, for example. The registration control unit <NUM> of the print server <NUM> registers the logical printer associated with the printing apparatus <NUM> to the print server <NUM>, in response to this request.

In step S702, the CP control unit <NUM> of the printing apparatus <NUM> transmits a printer information notification to the print server <NUM>, in order to perform notification of attribute information and attribute values supported by the printing apparatus <NUM>. The printer information notification may be transmitted using the Update-Output-Device-Attributes operation of IPP. The printer management unit <NUM> of the print server <NUM> reflects information notified using the printer information notification, on the printer information <NUM>.

In step S703, the CP control unit <NUM> of the printing apparatus <NUM> subscribes to event notifications of the print server <NUM>. Event notification subscription may be performed using the Create-Printer-Subscription operation of IPP. In step S704, the CP control unit <NUM> of the printing apparatus <NUM> transmits an event check request to the print server <NUM> in order to check occurrence of an event related to the printing apparatus <NUM>. The event check request may be transmitted using the Get-Notification operation of IPP.

In step S705, the printer management unit <NUM> of the information processing apparatus <NUM> searches for a logical printer registered in the print server <NUM>, for example, in accordance with an instruction from the user, and adds a discovered logical printer to the information processing apparatus <NUM>. In step S706, the printer management unit <NUM> of the information processing apparatus <NUM> obtains attribute information and attribute values of the added logical printer, and reflects these on the printer information <NUM>. The attribute information and attribute values of the logical printer may be obtained using the Get-Printer-Attributes operation of IPP.

In step S706, the print control unit <NUM> of the information processing apparatus <NUM> transmits, to the print server <NUM>, a print job for which a logical printer provided by the print server <NUM> is set as a target, in accordance with print attributes specified by the user. The print job may be transmitted using the Send-Document operation, the Print-Job operation, or the Create-Job operation of IPP, or the like.

In step S708, the print control unit <NUM> of the print server <NUM> transmits an event notification to the printing apparatus <NUM>, in accordance with the print job being received. The event notification may be transmitted using the Notification operation of IPP. In step S709, the CP control unit <NUM> of the printing apparatus <NUM> obtains a job list related to the printing apparatus <NUM> from the print server <NUM>, in accordance with the event notification being received. The job list may be obtained using the Get-Jobs operation of IPP.

In step S710, the CP control unit <NUM> of the printing apparatus <NUM> obtains a print job (for example, a print job specified by the user) from one or more print jobs in the job list. The print job may be obtained using the Fetch-Job operation of IPP. The print job may include print data and print settings (for example, attribute values).

The printing processing unit <NUM> of the printing apparatus <NUM> performs printing in accordance with the print job in response to the print job being received. In steps S711 and S713, the CP control unit <NUM> of the printing apparatus <NUM> performs notification of printer information in accordance with the processing state of the print job. Notification of the printer information may be performed using the Update-Output-Device-Attributes operation of IPP. In step S711, for example, "printer-state=processing" may be transmitted as an attribute value, and, in step S713, "printer-state=idle" may be transmitted as an attribute value. In addition, in step S712, the CP control unit <NUM> of the printing apparatus <NUM> performs notification of the job information in accordance with the processing state of the print job. Notification of the job information may be performed using the Update-Job-Status operation of IPP. In step S712, for example, "job-state=completed" may be transmitted as an attribute value. In step S714, the print control unit <NUM> of the print server <NUM> transmits a print completion notification to the information processing apparatus <NUM> in accordance with the printing apparatus <NUM> completing printing.

An example of processing in which the printing apparatus <NUM> downloads print data from the print server <NUM> will be described with reference to <FIG>. The operation in <FIG> may be started in accordance with the printing apparatus <NUM> receiving the print job in step S710 in <FIG>. The printing apparatus <NUM> may execute the operation in <FIG> every time it receives one print job. In the following description, the print job received from the printing apparatus <NUM> in step S710 is referred to as a "target job".

In step S801, the CP control unit <NUM> of the printing apparatus <NUM> determines whether or not any target job record is included in the DL state information <NUM>. If it is determined that a target job record is included in the DL state information <NUM> (YES in step S801), the CP control unit <NUM> advances the procedure to step S802, and otherwise (NO in step S801) advances the procedure to step S804.

A specific example of the DL state information <NUM> will be described with reference to <FIG>. In the example in <FIG>, the DL state information <NUM> is stored in a table format. The records in the DL state information <NUM> represent jobs. The DL state information <NUM> is stored in a non-volatile region (for example, the storage device <NUM>) of the printing apparatus <NUM> by the storage control unit <NUM>.

A column <NUM> shows unique identification information individually allocated to print jobs by the print server <NUM>. The CP control unit <NUM> may determine whether or not any target job record is included in the DL state information <NUM>, based on whether or not the column <NUM> includes a job ID of a target job. The column <NUM> shows file handle values of print data stored in a file system by the storage control unit <NUM>. The storage control unit <NUM> stores print data indicated by the print jobs, to the file system.

A column <NUM> shows the data sizes of portions of print data that have already been downloaded. A column <NUM> shows the total data sizes of the print data. When a total data size is unknown, the value in the column <NUM> may be "UNKNOWN". A column <NUM> shows time points when the print jobs entered a withheld state. The column <NUM> is used in the embodiment below. For this reason, in the present embodiment, the column <NUM> may be omitted.

If no target job record is included in the DL state information <NUM>, the job management unit <NUM> of the printing apparatus <NUM> adds a record indicating a target job to the DL state information <NUM> in step S802. The column <NUM> of this record holds the job ID of the target job. The column <NUM> of this record holds a file handle newly created for print data of the target job by the storage control unit <NUM>. Download has not been started at this point, and thus the column <NUM> of this record have a value of <NUM>. When the total data size of the print data can be obtained from the print server <NUM>, the column <NUM> of this record holds the obtained size, and, when the total data size is unknown, the column <NUM> holds "unknown". Furthermore, the job management unit <NUM> of the printing apparatus <NUM> also adds a record indicating a target job to the job information <NUM>.

If it is determined in step S801 that no target job record is included in the DL state information <NUM>, the CP control unit <NUM> of the printing apparatus <NUM> starts downloading print data of a target job in step S803. On the other hand, if it is determined in step S801 that a target job record is included in the DL state information <NUM>, the CP control unit <NUM> of the printing apparatus <NUM> restarts downloading print data of the target job in step S804. As will be described later, if it is determined in step S801 that a target job record is included in the DL state information <NUM>, at least a portion of print data is stored in the printing apparatus <NUM>. For this reason, the CP control unit <NUM> restarts downloading remaining data. Downloading may be started or restarted by transmitting an IPP message using the job ID of the received target job.

In step S805, the CP control unit <NUM> of the printing apparatus <NUM> determines whether or not download is canceled when the print data is downloaded partially. If it is determined that download is canceled when the print data is downloaded partially (YES in step S805), the CP control unit <NUM> advances the procedure to step S808, and otherwise (NO step S805) advances the procedure to step S806. Download can be canceled, for example, in accordance with a condition is satisfied, the condition including at least one of an error in communication occurring between the print server <NUM> and the printing apparatus <NUM> or a download cancel instruction being given by the user of the printing apparatus <NUM>. When the download speed of print data is low, the user of the printing apparatus <NUM> can cancel download once, and restart download when the communication band is not busy, or restart download using another communication line, for example.

In step S806, if download of the print data is continued, the CP control unit <NUM> of the printing apparatus <NUM> reflects the progress of download on the DL state information <NUM>. Specifically, the CP control unit <NUM> reflects the size of data that has been download to this point, on the column <NUM> of the DL state information <NUM>. The data downloaded from the print server <NUM> is stored in the RAM <NUM> or the storage device <NUM> by the storage control unit <NUM>.

In step S807, the CP control unit <NUM> of the printing apparatus <NUM> determines whether or not download of the print data has been completed. If it is determined that download has been completed (YES in step S807), the CP control unit <NUM> ends the processing, and otherwise (NO in step S807) advances the procedure to step S805. In this manner, determination is repeatedly performed as to whether or not download of print data has been canceled, until download of the print data is complete.

Determination as to whether or not download has been completed may be performed based on whether or not the size of downloaded data has reached the total data size of the print data. Alternatively, determination on completion of download may be performed based on whether or not the trailing edge of the data is confirmed in CHUNK communication that is a technique of Hypertext Transfer Protocol (HTTP) communication that is a basis of IPP communication. Furthermore, determination on completion of download may be performed by analyzing downloaded data.

If it is determined that download has been canceled, the CP control unit <NUM> of the printing apparatus <NUM> updates, in step S808, the job information <NUM> so as to indicate that download of the target job has been canceled. In addition, the information output unit <NUM> of the printing apparatus <NUM> may notify the user of the printing apparatus <NUM> that download of the print data has been canceled. In step S809, the storage control unit <NUM> of the printing apparatus <NUM> continues to store a downloaded portion of the print data. That is to say, even if download of the print data is canceled, the storage control unit <NUM> does not delete the downloaded data. In addition, the job management unit <NUM> retains the target job record in the DL state information <NUM> without deleting it.

An example of processing in which the printing apparatus <NUM> prints print data will be described with reference to <FIG>. The operation in <FIG> may be started in accordance with the printing apparatus <NUM> receiving a print job in step S710 in <FIG>. The printing apparatus <NUM> may execute the operation in <FIG>, every time one print job is received. In the following description, a print job received from the printing apparatus <NUM> is referred to as a "target job". The operation in <FIG> may be executed in parallel with the operation in <FIG>, or may be started after the operation in <FIG> is complete.

In step S1001, the CP control unit <NUM> of the printing apparatus <NUM> instructs the printing processing unit <NUM> to perform printing based on a target job. In this instruction, the CP control unit <NUM> may pass a buffer pointer of the RAM <NUM> where print data is held, as print data to the printing processing unit <NUM>, or may pass a file handle (the column <NUM>) of the file system. When the file handle is passed, the printing processing unit <NUM> may read out the print data from the file handle using the file handle. At the time of step S1001, download of the print data may or may not be complete.

In step S1002, the printing processing unit <NUM> of the printing apparatus <NUM> determines whether or not printing can be performed based on the target job. If it is determined that printing can be performed (YES in step S1002), the printing processing unit <NUM> advances the procedure to step S1006, and otherwise (NO in step S1002) advances the procedure to step S1003. When, for example, an error such as paper jam, toner shortage, or paper-out is occurring in the printing apparatus <NUM>, it may be determined that printing cannot be performed based on the target job.

In step S1003, the information output unit <NUM> of the printing apparatus <NUM> inquires of the user of the printing apparatus <NUM> about whether or not to cancel printing that is based on the target job. In step S1004, the input obtaining unit <NUM> of the printing apparatus <NUM> determines whether or not a cancel instruction to cancel the target job has been obtained from the user of the printing apparatus <NUM>. If it is determined that a cancel instruction has been obtained (YES in step S1004), the input obtaining unit <NUM> advances the procedure to step S1005, and otherwise (NO in step S1004) advances the procedure to step S1001. If a cancel instruction has not been obtained from the user, the CP control unit <NUM> of the printing apparatus <NUM> instructs again, in step S1001, the printing processing unit <NUM> to perform printing based on with the target job. In this manner, the printing apparatus <NUM> repeats a print instruction until the error in the printing apparatus <NUM> is resolved, or the target job is canceled by the user. A print instruction may be given again after a predetermined standby time has elapsed, or in accordance with the error in the printing apparatus <NUM> having been resolved. When a cancel instruction is obtained from the user, the printing processing unit <NUM> of the printing apparatus <NUM> cancels printing that is based on the target job in step S1005.

When printing can be performed based on the target job, the CP control unit <NUM> of the printing apparatus <NUM> determines, in step S1006, whether or not download of the print data has been completed. If it is determined that download has been completed (YES in step S1006), the CP control unit <NUM> advances the procedure to step S1007, otherwise (NO in step S1006) repeats step S1006, and waits until download is complete. Determination as to whether or not download has been completed may be performed using a technique similar to that in step S807. In addition, when step S807 has been completed earlier, the CP control unit <NUM> may utilize the result in step S1006.

In step S1007, the printing processing unit <NUM> of the printing apparatus <NUM> determines whether or not to hold the target job. If it is determined that the target job is to be held (YES in step S1007), the printing processing unit <NUM> advances the procedure to step S1008, and otherwise (NO in step S1007) advances the procedure to step S1009.

Hold printing is a technique for storing print data in a non-volatile region of the printing apparatus <NUM> without immediately performing printing upon receiving a print request to the printing apparatus <NUM>, and performing paper discharge processing in accordance with a print instruction given by the user of the printing apparatus <NUM>. Even when hold printing has been designated at the time of start of the method in <FIG>, if designated hold printing has been canceled at the time of execution of step S1007, it is determined that target job is not to be held.

In step S <NUM>, the printing processing unit <NUM> of the printing apparatus <NUM> determines whether or not to cancel reservation of the target job. If it is determined that reservation is to be canceled (YES in step S1008), the printing processing unit <NUM> advances the procedure to step S1001, and otherwise (NO in step S1008) repeats the procedure to step S1008. In step S1009, the printing processing unit <NUM> of the printing apparatus <NUM> performs printing based on the target job.

In step S1010, the CP control unit <NUM> of the printing apparatus <NUM> notifies the print server <NUM> of the state of the target job. Specifically, when the target job is canceled in accordance with a user instruction in step S1005, the CP control unit <NUM> notifies the print server <NUM> that the target job has been canceled. This notification may be transmitted as an attribute value "job-state=cancel" using the Update-Job-Status operation of IPP, for example. The job management unit <NUM> of the print server <NUM> cancels the print job in accordance with this notification being received, and deletes the print data of the print job from the storage device <NUM>. When printing that is based on the target job is completed in step S1009, the CP control unit <NUM> notifies the print server <NUM> that the target job has been completed. This notification may be transmitted as an attribute value "job-state=completed" using the Update-Job-Status operation of IPP, for example. The job management unit <NUM> of the print server <NUM> completes the print job in accordance with this notification being received, and deletes the print data of the print job from the storage device <NUM>. By performing notification in step S1010 in this manner, the processing state of the print job is synchronized between the print server <NUM> and the printing apparatus <NUM>.

In step S1011, whether the target job has been canceled or printing that is based on the target job has been completed, the job management unit <NUM> of the printing apparatus <NUM> deletes the target job record from the DL state information <NUM>. In addition, whether the target job has been canceled or printing that is based on the target job has been completed, the storage control unit <NUM> of the printing apparatus <NUM> deletes the print data of the target job. When, for example, the target job is canceled in accordance with a user instruction in step S1005, and the target job has not been completely downloaded, the storage control unit <NUM> deletes the data that has been downloaded to this point. In addition, download of the target job is canceled in accordance with the print job having been canceled. By deleting unnecessary data in this manner, the storage region of the printing apparatus <NUM> is effectively utilized. In addition, the job management unit <NUM> of the printing apparatus <NUM> updates the job information <NUM> in accordance with the execution state of the print job.

When download of the print data is canceled in step S805 in <FIG>, the printing apparatus <NUM> does not notify the print server <NUM> that the target job is to be canceled or the target job is to be completed. For this reason, even when download of the print data is canceled in step S805 in <FIG>, the print data of the target job remains to be stored in the print server <NUM>. In addition, as described above, even when download of the print data is canceled in step S805 in <FIG>, a downloaded portion of the print data of the target job remains to be stored also in the printing apparatus <NUM>.

The printing apparatus <NUM> may execute the operation in <FIG> again, on a print job for which download of the print data has been canceled. When, for example, the user instructs the printing apparatus <NUM> to execute download again, or an error in communication between the print server <NUM> and the printing apparatus <NUM> has been resolved, the printing apparatus <NUM> may execute the operation in <FIG> on this print job again. In this case, the printing apparatus <NUM> can download the remaining portion of the print data, and thus it is possible to shorten a time from when download is executed again until when printing is complete, and the communication amount can be reduced. Also, when a cancel instruction is explicitly obtained from the user as in step S1004, it is possible to effectively utilize the storage capacity of the printing apparatus <NUM> by deleting print data. Furthermore, also when a print job is in a held state, print data is not deleted.

An example of a packet that is used for download of print data from the print server <NUM> by the printing apparatus <NUM> will be described with reference to <FIG>. IPP is based on HTTP, and thus, in <FIG>, an HTTP packet will be described as an example. IPP enables an HTTP packet to be transmitted/received.

<FIG> shows an example of a packet <NUM> that is transmitted to the print server <NUM> by the printing apparatus <NUM> in order to download print data. A header of the packet <NUM> includes a range field <NUM>. The range field <NUM> is a field for a range request to specify a range of download target within print data. In the example of the packet <NUM>, a range of <NUM> to <NUM> bytes is specified. When print data is downloaded from the beginning as in step S803 in <FIG>, such a range is specified. In addition, even for first download, the printing apparatus <NUM> may specify an offset range.

The range field <NUM> can also specify a partial range of print data. For this reason, when remaining print data is downloaded as in step S804 in <FIG>, the printing apparatus <NUM> specifies, in the range field <NUM>, a range excluding a downloaded portion. Accordingly, the printing apparatus <NUM> can download the remaining portion of the print data (offset the print data).

<FIG> shows an example of a packet <NUM> that is transmitted to the printing apparatus <NUM> by the print server <NUM> as a response to the packet <NUM>. A header of the packet <NUM> includes a field <NUM> holding the unit of the size of response data. In addition, the header of the packet <NUM> also includes a field <NUM> holding the size of data included in a body <NUM> of the packet <NUM>. Furthermore, the header of the packet <NUM> includes a field <NUM> holding a range of data included in the body <NUM> of the packet <NUM> and the total size of the data. When the size of print data has not been determined yet, it is possible that the field <NUM> has no total size.

The printing apparatus <NUM> may establish a plurality of HTTP connections with the print server <NUM>, and receive, in parallel, a plurality of packets in which separate offset ranges are set. Accordingly, the speed of download of print data is increased.

An example of a screen <NUM> for displaying a result of execution of a print job will be described with reference to <FIG>. The information output unit <NUM> of the printing apparatus <NUM> may generate the screen <NUM> in accordance with an instruction from the user and display the generated screen <NUM> on the operation unit <NUM>. Alternatively, the information output unit <NUM> of the printing apparatus <NUM> may generate the screen <NUM> in accordance with a change in the execution state of a print job (for example, after steps S808, S1005, and S1009 are executed), and display the screen on the operation unit <NUM>. The screen <NUM> includes information regarding not only a print job related to cloud printing, but also a print job related to local print. The screen <NUM> shows the states of print jobs in a table format.

A column <NUM> shows the start time and date of printing that is based on each print job. The start time and date may be time and date when the printing apparatus <NUM> started printing. A column <NUM> shows the end time and date of printing that is based on the print job. The end time and date may be time and date when the printing apparatus <NUM> ended printing. A column <NUM> shows the name of a print job represented by each record. This name may be a file name of print data.

A column <NUM> shows the state of each print job in the printing apparatus <NUM>. When, for example, download of print data is canceled due to a communication error in step S805 in <FIG>, "communication error" may be displayed. A column <NUM> shows the format of print data and whether the print job is related to cloud printing or local print. A column <NUM> shows a user operation that can be executed on the print job. The user can input a cancel instruction (step S <NUM> in <FIG>) for the print job by pressing "cancel", for example. The user can execute the print job again by pressing "print". In this case, as described above, when the print data of the print job has been downloaded partially, the remaining portion of the print data is downloaded.

A printing apparatus <NUM> according to a second embodiment will be described. Redundant description of content that may be similar to the printing apparatus <NUM> according to the first embodiment is omitted. There are cases where there is no non-volatile region that is large enough to store print data, depending on the printing apparatus <NUM>. In addition, even if there is a sufficient non-volatile region, when a large amount of print data remains in the non-volatile region, there can be cases where the non-volatile region cannot be used for downloading new print data. In view of this, in the present embodiment, an upper limit capacity is set for the non-volatile region that can be used for downloading print data, and print data is downloaded so as not to exceed this upper limit capacity.

Operations of the printing apparatus <NUM> according to the second embodiment will be described with reference to <FIG>. The printing apparatus <NUM> according to the second embodiment executes the operation in <FIG> in addition to the operation in the first embodiment. The operation in <FIG> may also be executed continuously while the printing apparatus <NUM> is activated. An upper limit capacity is set for the non-volatile region of the printing apparatus <NUM> that can be used for cloud printing. The upper limit capacity may be set in a fixed manner in accordance with the capacity of the non-volatile region of the printing apparatus <NUM> (the storage device <NUM>), or may be set in a variable manner based on the capacity of an external storage connected to the printing apparatus <NUM>.

In step S1301, the storage control unit <NUM> of the printing apparatus <NUM> permits the non-volatile region to newly store data for cloud printing. In this case, data related to cloud printing such as print data may be stored in the non-volatile region in an unlimited manner.

In step S1302, the storage control unit <NUM> of the printing apparatus <NUM> determines whether or not the used capacity of the non-volatile region used for cloud printing exceeds the upper limit capacity. If it is determined that the used capacity of the non-volatile region for cloud printing exceeds the upper limit capacity (YES in step S1302), the storage control unit <NUM> advances the procedure to step S1303, and otherwise (NO in step S1302) repeats step S1302.

In step S1303, the storage control unit <NUM> of the printing apparatus <NUM> prohibits the non-volatile region to newly store data for cloud printing. In this case, data related to cloud printing can be stored in the volatile region (the RAM <NUM>), but cannot be stored in the non-volatile region (the storage device <NUM>). For this reason, print data that is downloaded in steps S803 and S805 in <FIG> is stored only in the volatile region, and is not stored in the non-volatile region.

In addition, hold printing is a function that is based on assumption that print data is stored in a non-volatile region, and thus hold printing cannot be executed. For this reason, a print job that instructs hold printing is handled as an error. Regarding a print job whose print data is already stored in the non-volatile region, hold printing may be available continuously.

In step S1304, the storage control unit <NUM> of the printing apparatus <NUM> determines whether or not the used capacity of the non-volatile region used for cloud printing is smaller than the upper limit capacity. If it is determined that the used capacity of the non-volatile region used for cloud printing is smaller than the upper limit capacity (YES in step S1304), the storage control unit <NUM> advances the procedure to step S1301, and otherwise (NO in step S1304) repeats step S1303.

As described above, according to the present embodiment, cloud printing can be efficiently executed based on the capacity of the non-volatile region of the printing apparatus <NUM>.

A printing apparatus <NUM> according to a third embodiment will be described. Redundant description of content that may be similar to the printing apparatus <NUM> according to the first embodiment is omitted. In addition, the present embodiment may be combined with the second embodiment. In the first embodiment, print data is stored in a storage region until explicitly deleted by the printing apparatus <NUM>. When print data is continuously stored for a long time for hold printing or download restart, the capacity of the storage region cannot be effectively utilized. In view of this, in the present embodiment, an upper limit time is set for a time during which print data is stored, and, when this upper limit time is exceeded, print data is deleted. The upper limit time may be a fixed value, or may be able to be set by the user of the printing apparatus <NUM>.

Operations of the printing apparatus <NUM> according to the third embodiment will be described with reference to <FIG>. The printing apparatus <NUM> according to the third embodiment executes the operation in <FIG> in addition to the operations in the first embodiment. The operation in <FIG> is executed on a print job for which it is determined in step S807 or S1006 that download of print data has been completed, or a print job for which it is determined in step S805 that download has been canceled. In the following description, such a print job is referred to as a "target job". The printing apparatus <NUM> may execute the operation in <FIG> in parallel on a plurality of print jobs.

In step S1401, the timer control unit <NUM> of the printing apparatus <NUM> records a time point at which download of a target print job is completed or canceled , in the column <NUM> of the DL state information <NUM>. This time point can also be referred to as a "withholding start time point". The print data of the target job may be stored in the non-volatile region of the printing apparatus <NUM>.

In step S1402, the timer control unit <NUM> of the printing apparatus <NUM> determines whether or not a time that has lapsed from the withholding start time point has reached the upper limit time. If it is determined that a time that has lapsed from the withholding start time point has reached the upper limit time (YES in step S1403), the timer control unit <NUM> advances the procedure to step S1403, and otherwise (NO in step S1403) repeats step S1402.

In step S1403, the job management unit <NUM> of the printing apparatus <NUM> deletes the target job record from the DL state information <NUM>. Accordingly, the withholding start time recorded in the column <NUM> is also deleted. In addition, the storage control unit <NUM> of the printing apparatus <NUM> deletes the print data of the target job. When an instruction to execute, again, a print job whose print data has been deleted in this manner or to execute hold printing of such a print job is given, the printing apparatus <NUM> downloads this print data again from the beginning.

As described above, according to the present embodiment, it is possible to effectively utilize the storage region of the printing apparatus <NUM>.

A printing apparatus <NUM> according to a fourth embodiment will be described. Redundant description of content that may be similar to the printing apparatus <NUM> according to the first embodiment is omitted. In addition, the present embodiment may be combined with the second embodiment or the third embodiment. In the first embodiment, when an instruction to cancel a print job is obtained from the user in step S1004 in <FIG>, print data is deleted in step S1001. Instead, when a cancel instruction is obtained from the user, the printing apparatus according to the present embodiment inquires the user about whether or not to delete the print data.

Operations of the printing apparatus <NUM> according to the fourth embodiment will be described with reference to <FIG>. This method is different from the method in <FIG> in that steps S1501 and S1502 are further provided between steps S1005 and S1010, and other content may be similar.

In step S1501, the information output unit <NUM> of the printing apparatus <NUM> inquires the user of the printing apparatus <NUM> about whether or not to delete a downloaded portion of print data of the target job. In step S1502, the input obtaining unit <NUM> of the printing apparatus <NUM> determines whether or not a delete instruction to delete the downloaded portion of the print data has been obtained from the user of the printing apparatus <NUM>. The input obtaining unit <NUM> advances the procedure to step S1010 if it is determined that a delete instruction has been obtained (Yes in step S1502), and ends the procedure if it is determined that an instruction to maintain the downloaded portion of the print data has been obtained (NO in step S1502).

When a delete instruction is obtained, the printing apparatus <NUM> executes steps S1010 and S1011 in <FIG>, thereby deleting the print data in the printing apparatus <NUM>, and causing the print server <NUM> to delete the print data. On the other hand, if a delete instruction has not been obtained, the printing apparatus <NUM> does not execute steps S1010 and S1011 in <FIG>. Accordingly, the print data in the printing apparatus <NUM> continues to be stored, and the print data in the print server <NUM> also continues to be stored. Accordingly, when the print job for which this print data is used is executed again, the amount of data that is download is reduced.

Claim 1:
A printing apparatus (<NUM>) comprising:
receiving means (<NUM>) for receiving a print job from a print server (<NUM>) configured to provide a logical printer;
printing means (<NUM>) for performing printing based on the print job; and
storage control means (<NUM>) for storing a downloaded portion of print data specified by the print job, to a storage region (<NUM>, <NUM>),
wherein, when download of the print data is restarted after download of the print data is canceled, the receiving means downloads a portion of the print data that is not stored in the storage region, using a Hypertext Transfer Protocol, HTTP, range request;
characterized in that:
an Internet Printing Protocol, IPP, is used for receiving the print job from the print server,
the storage region includes a volatile region (<NUM>) and a non-volatile region (<NUM>), and
the storage control means
permits the non-volatile region to newly store data for printing that uses the logical printer, when a used capacity of the non-volatile region used for the printing is smaller than an upper limit capacity, and
prohibits the non-volatile region to newly store data for printing that uses the logical printer, when the used capacity of the non-volatile region used for the printing exceeds the upper limit capacity.