Patent Description:
In many companies and organizations, a printer is provided in the office, and printing of a document is available from a laptop computer via a network. More specifically, when a user instructs to execute printing of data ('print data') which has been created by, for example, a word processing application in a laptop computer, the print data is transmitted to the printer via a network, and printing is performed at the printer subsequently.

In relatively large companies and organizations, multiple printers may be installed. If multiple printers are available, a user can use a printer which is located closer to the user, which increases convenience of the user. Moreover, when one of the multiple printers is occupied by another user, the user can save his or her time by alternatively using the other printer.

Furthermore, it is known that multiple printers are managed using a print server. In such case, the print server may be installed within an internal network of the company or the organization. When printing is instructed by a user operating a laptop computer, the print data is transmitted from the laptop computer to the print server and spooled therein. Then, when printing is instructed by the user operating a desired printer, the spooled print data is transmitted from the print server to the desired printer, and printing is performed subsequently. <CIT> discloses a client device connecting to a cloud server to receive the address of a site print server.

A more recent trend is to move services that have been provided by internal servers to the cloud. It is also known that, in mid-sized companies and organizations that are provided with multiple printers, but which do not want to install their own print server within the internal network, printing is performed by using a cloud service accessible over the internet. Such cloud service could be provided by a third-party provider. In such case, when printing is instructed by a user operating a laptop computer, only attribute information of the print data spooled as a print job is transmitted from the laptop computer to the cloud service and the print data itself is spooled within the laptop computer. Then, when printing is instructed by a user operating a desired printer, the print data is transmitted from the laptop computer to the desired printer, and printing is performed subsequently.

In the case that a company or an organization has a HQ (headquarters) office and a branch office, it may be desirable that printing at the HQ office may be performed by using a print server installed within the HQ internal network, whereas printing at the branch office may be performed by using a cloud service. In the HQ office, print volume is likely to be large, thus it is worth having its own print server. On the other hand, in the branch office, print volume is not likely to be as large as the HQ office, thus it is not worth having its own print server. There are many other reasons that it may be desirable to use a local (internal) print server in one location and a cloud (external) service to service print needs in another location such as security requirements for data being printed.

However, some trouble may arise when a cloud service is used in one location and a local print server is used in another location. In particular, it may be difficult for users moving between the two locations to print without having to perform manual changes in the configuration of their laptop or other computer for printing or a manual change to switch between different pieces of printing software.

It is an aim of the present invention to allow easier printing when an information processing apparatus is moved between a first location in which printing is to be performed using a print server on an internal network and a second location in which printing is to be performed using a cloud service.

Aspects of the present invention are set out by the independent claims.

Embodiments of the present invention will now be described, by way of example only, with reference to the accompanying drawings in which:.

Various illustrative embodiments, features, and aspects of the invention will be described in detail below with reference to the drawings.

<FIG> illustrates a printing system including two geographical locations. The first location is a Head Quarters (HQ) Office of an organization. The second location is a Branch Office (BO) of the organization. In this embodiment, a HQ office and a branch office are described as an example. However, the invention is not limited to the combination of a HQ office and a branch office, any two locations using different printing methods (as explained in more detail below) would suffice. It could be two branch offices that have separate internal networks, and alternatively it could be two divisions or departments that are located in the same office but use a separate internal network.

In the HQ office there is a print server <NUM> and a printer <NUM> connected to each other via an HQ internal network <NUM>. A client computer <NUM> can also be connected to the HQ internal network <NUM>, and it can communicate with the print server <NUM> and the printer <NUM> via the HQ internal network <NUM>.

In the branch office, there is a printer <NUM> connected to a Branch office (BO) internal network <NUM>. The client computer <NUM> can also be connected to the BO internal network <NUM>, and it can communicate with the printer <NUM> via the BO internal network <NUM>. The arrow in <FIG> between the HQ office and the branch office shows that the client computer <NUM> can be carried between those offices, thereby moving between HQ internal network <NUM> and the BO internal network <NUM>. In other words, if it is owned by an employee who routinely works in the HQ office, the employee can take the client computer <NUM> with him or her when he or she visits the branch office and connect it to the BO internal network <NUM>. Likewise, if it is owned by an employee who routinely works in the branch office, the employee can take the client computer <NUM> with him or her when he or she visits the HQ office and connect it to the HQ internal network <NUM>.

The client computer <NUM> and the Printer <NUM> can also communicate with the cloud service <NUM>. The BO internal network <NUM> is connected to the internet via a router (not shown). The internal networks <NUM> and <NUM> can be a wired or wireless network. It can be called simply "network", or alternatively called "LAN" (Local Area Network).

Furthermore, as will be described in more detail below, the print server <NUM> and cloud service <NUM> communicate with each other to exchange information. This can be done via the internet.

<FIG> shows selected standard components that are present in the client computer <NUM>. The client computer <NUM> is an example of the information processing apparatus, and in this embodiment, it is a general-use laptop computer. The client computer <NUM> has a CPU (Central Processing Unit) <NUM>, a RAM (Random Access Memory) <NUM>, a ROM (Read Only Memory) <NUM>, a keyboard <NUM>, a mouse <NUM>, a display unit <NUM>, an external storage device <NUM>, and a network interface <NUM> which are all connected to each other via a bus.

The CPU <NUM> is a standard processor such as those available from Intel (RTM) or AMD (RTM). The RAM <NUM> is a conventional RAM and is used as a temporary storage area for instructions being processed by the CPU <NUM>. The ROM <NUM> is a memory that stores certain applications such as a document creation application for use by the client computer <NUM>, such as the BIOS. The keyboard <NUM> and mouse <NUM> form input devices for the client computer <NUM> in a conventional manner. The display unit <NUM> is a TFT display for providing output display for a user. The external storage device <NUM> is a removable USB hard disk drive. Network interface <NUM> is a set of standard components that allows the client computer <NUM> to communicate over the internal network <NUM> or <NUM>. Such client computers are well known in the art and may include additional components (video cards etc.) or other components.

<FIG> shows selected standard components that are present in the print server <NUM>. The print server <NUM> has a CPU <NUM>, a RAM <NUM>, a ROM <NUM>, a storage <NUM>, and a network interface <NUM> which are all connected each other via a bus. It is possible for those components of the print server <NUM> to be either distributed to multiple physical locations or integrated in a single housing.

The CPU <NUM> is a standard processor such as those available from Intel (RTM) or AMD (RTM). The RAM <NUM> is a conventional RAM and is used as a temporary storage area for instructions being processed by the CPU <NUM>. The ROM <NUM> is a memory that stores certain applications for use by the print server <NUM>, such as the BIOS. The storage <NUM> is a hard disk drive. Network interface <NUM> is a set of standard components that allows the print server <NUM> to communicate over the internal network <NUM> or the Internet.

<FIG> shows selected standard components that are present in the printers <NUM> and <NUM>. The printers <NUM> and <NUM> have a CPU <NUM>, a RAM <NUM>, a ROM <NUM>, a print unit <NUM>, a user interface <NUM>, a card reader <NUM>, and a network interface <NUM> which are all connected to each other via a bus. The CPU <NUM> is a standard processor such as those available from Intel (RTM) or AMD (RTM). The RAM <NUM> is a conventional RAM and is used as a temporary storage area for instructions being processed by the CPU <NUM>. The ROM <NUM> is a memory that stores certain applications for use by the printers <NUM> and <NUM>, such as the BIOS. The print unit <NUM> could be implemented by an electrophotographic type printer engine or an inkjet type printer engine, and it can print an image on a printing media such as a paper based on the provided data.

The card reader <NUM> reads out a user ID information from a contactless card. The readout ID is used to identify or authenticate the user who is operating the printers <NUM> and <NUM>. The user ID can be input into the printers <NUM> and <NUM> by using a keyboard instead of the card reader <NUM>. The authentication of the user can be done in cooperation with a separately-installed authentication server which is provided within each internal network. Network interface <NUM> is a set of standard components that allows the printers <NUM> and <NUM> to communicate over the internal network <NUM> or <NUM>.

<FIG> shows software installed on the client computer <NUM>. The client computer <NUM> includes normal computer software, such as an operating system (e.g. Windows (RTM) or Mac OS (RTM)), which aren't shown in the Figure. Additionally, the client computer <NUM> has an editing program <NUM>, such as Microsoft Word (RTM) or a PDF editing program. The editing program is just an example program and any program from which it may be desired to print may be used. The client computer <NUM> further includes a printer driver <NUM>, referred to as a Universal printer driver. The printer driver <NUM> is configured to convert data for printing, such as output from the editing program <NUM> via the operating system spooling functions, into a single printer language. In this example, the printer driver <NUM> is configured to convert print data of a print job into the PCL printer language (Printer Command Language). However, another printer language may be used. The printer language used by the printer driver <NUM> does not vary according to the printer type to which the print data is to be sent, despite different models of printer using different printer languages. The Universal Printer driver includes a queue <NUM> for spooled jobs waiting to be printed.

The client computer <NUM> further has installed on it a program <NUM>, which will be referred to as a 'smart client'. The smart client <NUM> can take over typical print server tasks such as print job spooling, storage of attribute information of the print jobs and provision of print job lists to a printer. As will be explained in more detail later, the smart client <NUM> is configured to control the printing behavior of the client computer <NUM>.

<FIG> illustrates communication between the cloud service <NUM> and the print server <NUM>. As mentioned previously, there is an exchange of information <NUM> between the cloud service <NUM> and the print server <NUM>. In particular, at the time when the print server <NUM> is being set up in the HQ office, the print server <NUM> is configured with a connection to the cloud service <NUM>. The print server <NUM> is registered with the cloud service <NUM> with a user account (e.g. XYZ corporation). Thereafter, the information <NUM> is periodically synchronized between the print server <NUM> and the cloud service <NUM>.

<FIG> illustrates information <NUM> that is synchronized between the print server <NUM> and the cloud service <NUM>. The information <NUM> includes the identities of registered users of the print system illustrated in <FIG>. The idea of registered users in a print system is known in the printing field and consists of those users who are registered within an authentication function of the print system. The registered users may have differing authorizations, e.g. permission to print, scan or perform other operations within the print system. Not all users may have the same permissions.

The user identities and permissions are also shared/synchronized between the cloud service <NUM> and the print server <NUM>. As a consequence, a registered user may log in to each of the cloud service <NUM> and the print server <NUM>. Further, changes made by an administrator to permissions or to add/remove registered users are kept up-to-date in the cloud service <NUM> and print server <NUM> by virtue of this synchronization. The synchronization may be performed according to a determined schedule, upon detection of a change in the data at either the cloud service <NUM> or the print server <NUM>, or by any other method.

In addition to the identity of the registered users, permissions of the users (e.g. print permissions such as printing single/duplex or the ability to print color/black and white), information about the print history of the user (e.g. volumes printed by the user etc.) and cost centre information (cost centre information allocated by a user against certain print or scan activities) may be synchronized between the print server <NUM> and the cloud service <NUM>.

<FIG> shows a central service and user access function <NUM> on the cloud service <NUM> and a central service and user access function <NUM> on the print server <NUM> (each shown in a single central service/user access block for illustrative convenience). As will be explained in more detail in connection with <FIG>, the central service of the cloud service <NUM> and the central service of the print server <NUM> are configured to provide configuration information to the smart client <NUM> of the client computer <NUM>. The user access function includes a database storing the identity of the registered users and print permissions mentioned above. When a request is received from a client computer <NUM> to access the cloud service <NUM>, the user access function <NUM> checks the received user name and password or other authentication information such as a token against the database of registered users and only allows access to further functions of the cloud service <NUM> if the user name and authentication match a registered user. Similarly, the user access function <NUM> of the print server <NUM> checks a received user name and password or other authentication information such as a token against the database of registered users and only allows access to further functions of the print server <NUM> if the user name and authentication match a registered user. As shown in <FIG>, the smart client configuration information is synchronized between the print server <NUM> and the cloud service <NUM>.

<FIG> further shows two additional features of the print server <NUM>. The first is UI server software <NUM>, which is provided on the print server <NUM> to provide UI display screens to the printer <NUM> in the HQ office as will be explained in more detail below. The second is a print queue <NUM> for storing print jobs for printing.

The cloud service <NUM> also has a UI server function <NUM> and the printer <NUM> in the branch office is configured to be served UI pages from the cloud service <NUM>.

<FIG> shows software on the printers <NUM> and <NUM>. In the example, the printers are Canon (RTM) Multi-function printers. However, in other example, the printers may be from another manufacturer or be a single function or other type of printer. The Multi-function printers <NUM> and <NUM> each have a Java (RTM)-based operating system <NUM> installed on them. On the operating system <NUM> it is possible to install software applications <NUM>. In the present embodiments that multi-function printers at least have a single UI application <NUM> installed on them. This UI application includes a browser <NUM> and functions to allow the Multi-function printer to connect to the UI server <NUM> of the print server <NUM> or the UI server <NUM> of the cloud service <NUM>, to be served UI display pages. In this way, the UI of each printer in the HQ office is sent pages/data by the print server <NUM> and each printer in the Branch office is sent pages/data by the cloud service <NUM>. The printers in the HQ office can display print jobs stored on the print queue <NUM> of the print server <NUM> and the user can release jobs to the printer for printing.

<FIG> shows operations between the smart client <NUM> installed on the client computer <NUM> and either the cloud service <NUM> or print server <NUM>. The following <FIG> and <FIG> will explain two different print work flows that can be controlled by the smart client <NUM> in dependence upon this communication between the smart client <NUM> and either the print server <NUM> or the cloud service <NUM>.

As mentioned earlier, the purpose of the smart client <NUM> is to take on some functions of a print server. In particular, the smart client <NUM> is configured to look for configuration information from a central service, in this case the central service <NUM> on cloud service <NUM> or the central service <NUM> on the print server <NUM>. The client computer <NUM> is initially configured and issued to a user within the HQ office. The smart client <NUM> is initially configured to communicate with the both the central service <NUM> on the print server <NUM> and the central service <NUM> of the cloud service <NUM>. That is to say that suitable address information is stored within the smart client <NUM> to allow the smart client <NUM> to connect to the central service <NUM> of the print server <NUM> and the central service <NUM> of the cloud service <NUM>. The smart client <NUM> is configured with the address of the central service <NUM> of the cloud service <NUM> as a higher priority than the central service <NUM> of the print server <NUM>, such that the smart client <NUM> will try to connect to the central service of the cloud server first before trying to connect to the central service <NUM> of the print server <NUM> if connection to the cloud service <NUM> is not possible.

When the smart client <NUM> starts (when it is activated), the smart client <NUM> detects the location the client computer <NUM> at S801. There are several ways to identify the location of a client computer. For example, it may be possible to identify the location of the client computer by the IP address allocated to the client computer. Another method is to look at the DNS tracking. Another option is trace routing.

In the case that the IP address is used for the identification, if the IP address allocated to the client computer <NUM> is within the IP address range for the HQ internal network <NUM>, the location of the client computer <NUM> is identified as being at the HQ, and similarly if the IP address allocated to the client computer <NUM> is within the IP address range for the BO internal network <NUM>, the location of the client computer <NUM> is identified as being at the BO. Alternatively, in the case that DNS is used for the identification, if the domain is 'XYZ. de', the location of the client computer <NUM> is identified as being in Germany, and similarly if the domain is 'XYZ. com', the location of the client computer <NUM> is identified as being in the United States.

In the case of trace routing, a command is sent to a known address, such as a company web server or domain controller using a traceroute or similar diagnostic tool that generates a list of routers that the packet passes through on its way to the destination. In this way, by looking at the information of the nearest (shortest time) routers information about the location of the smart client can be obtained.

When the smart client <NUM> is required, the smart client <NUM> sends a request for configuration information to a central service <NUM> or <NUM> at S802. The smart client <NUM> monitors a spooler, so if a job is being created by the printer driver <NUM>, the smart client <NUM> will intercept it. The request for configuration information includes information about the network location of the client computer <NUM>. As noted above, the central service <NUM> of the cloud service <NUM> is given a higher priority by the smart client <NUM>. Accordingly, a request is first sent to the central service <NUM> of the cloud service <NUM>. In a case that the client computer <NUM> is on the HQ internal network <NUM>, the central service <NUM> will respond with configuration information to cause the client computer <NUM> to perform a workflow as will be subsequently described with reference to <FIG>. In particular, the configuration information will cause the client computer <NUM> to send print data to the queue <NUM> on the print server <NUM>. On the other hand, if the user is visiting the branch office, in reply to the request to the central service <NUM> of the cloud service <NUM>, the central service <NUM> of the cloud service <NUM> will send configuration information to cause the client computer <NUM> to perform a print workflow as will be subsequently described with reference to <FIG>. In particular, the configuration information will cause the printer driver <NUM> of the client computer <NUM> to store print data in the queue <NUM> of the printer driver <NUM>. In a case where the request for configuration information transmitted by the client computer <NUM> while residing on the HQ office internal network <NUM> is not replied to, the client computer <NUM> will secondly try the central service <NUM> on the print server <NUM>. In a case where the request for configuration information transmitted by the client computer <NUM> while residing on the branch office internal network <NUM> is not replied to, the printing will fail because the central service <NUM> of the print server <NUM> is not accessible from the branch office internal network <NUM>.

The skilled person will understand that the print work flows now described with reference to <FIG> and <FIG> are illustrative and the print workflows at each location may be varied according to needs. The embodiments include a mechanism that allows a hybrid cloud printing system, whereby a client computer can automatically be configured to execute printing using the print server <NUM> in the HQ office location and printing using the cloud service <NUM> in the Branch office location. This is achieved by automatically configuring the smart client <NUM> as the client computer <NUM> moves between the two locations.

<FIG> shows a sequence diagram illustrating a printing method at the HQ office where the print server <NUM> is utilized. In this case, the smart client <NUM> has received configuration information that indicates that the print job including the print data should be sent by the printer driver <NUM> to the Queue <NUM> on the print server <NUM> for printing. In S901, the user operating the client computer <NUM> instructs to print data that is stored in the client computer <NUM>. This instruction can be issued by the editing program <NUM> installed in the client computer <NUM>. As noted above, this application includes but is not limited to a word processing application, a spreadsheet software, and a web browser, and the printer driver <NUM> is activated by those applications via the operating system of the client computer <NUM>.

In S902, the client computer <NUM> sends an access request to the print server <NUM>. The access request includes user identification and authentication information which is processed by the user access function <NUM> of the print server <NUM>. The user access function <NUM> checks the received identification and authentication information against the information stored in the synchronized database of the user access function <NUM>. If the information corresponds to that of a registered user, the access request is successful.

If the user access request is successful, both print data and attribute information of the print data are transmitted from the client computer <NUM> to the print server <NUM>. The transmission of the print data and the attribute information can be done either in a batch or separately. The transmitted print data is then spooled as a print job and stored in the queue <NUM> on the print server <NUM> in S903. The attribute information includes information such as the identity of the user who requested the printing and information about print settings, such as number of copies, black and white or color, stapling options etc..

The user who operated the client computer <NUM> then moves to the location where the printer <NUM> is located, and logs into the printer <NUM> for example by using the contactless card in S904. This involves a request by the printer <NUM> to the user access function <NUM>, which request includes user name and authentication information from the contactless card.

Once the user has successfully logged into the printer <NUM> (i.e. the authentication of the user was successful), the user is allowed to use functions of the printer <NUM>. "printing" is one of those functions, and when the user selects "printing", the printer <NUM> requests the print server <NUM> for a list of print jobs stored in the queue <NUM> and belonging to the logged in user in S905. This list contains the names of print jobs having attribute information indicating that the print server <NUM> received the print job from the user.

In S906, the requested list is transmitted from the print server <NUM> to the printer <NUM>. In S907, the list provided by the print server <NUM> is displayed at the operation screen included in the user interface <NUM>. The names of print jobs are displayed on the user I/F <NUM> of the printer so that the user can easily select a print job which he or she wishes to print at the printer <NUM>.

In <NUM>, the user selects a print job, and in S908, the printer <NUM> sends a request to the print server <NUM> for the print data corresponding to the selected print job. In S909, the requested print data is transmitted from the print server <NUM> to the printer <NUM>. Step S909 also includes converting, by the print server <NUM>, the print data from the generic PCL file format in which it was sent to the queue <NUM> by the universal print driver <NUM> into a print language that is accepted by the printer <NUM>. This conversion is done by means of device information files (DIF files) stored on the print server <NUM>. In S910, printing is performed at the printer <NUM> based on the print data received from the print server <NUM>.

<FIG> shows a sequence diagram illustrating a printing method at the branch office where the cloud service <NUM> is utilized. In this situation, the smart client <NUM> on the client computer <NUM> attempted to contact the central service <NUM> of the cloud service <NUM> and received configuration information from there. The configuration information from the central service <NUM> of the cloud service <NUM> indicates that, based on the client computer's location on the BO internal network <NUM>, the print workflow is for the universal printer driver <NUM> to store the print job on the queue <NUM> of the client computer <NUM>. The configuration information also indicates that the smart client <NUM> is therefore to perform the print server functions, such as performing print job conversion as will be explained in more detail below.

In S1001, the user operating the client computer <NUM> instructs to print data that is stored in the client computer <NUM>. This instruction can be issued by the editing program <NUM> installed in the client computer <NUM> in cooperation with the operating system installed in the client computer <NUM>.

In S1002, print data is spooled in the client computer <NUM> and stored in the queue <NUM>. Further, in S1003 the client computer <NUM> sends an access request to the cloud service <NUM>. The access request includes user identification and authentication information which is processed by the user access function <NUM> of the cloud service <NUM>. The user access function <NUM> checks the received identification and authentication information against the information stored in the synchronized database of the user access function <NUM>. If the information corresponds to that of a registered user, the access request is successful. If the user access request is successful, the client computer <NUM> sends a request to register a print job. The request includes only attribute information (metadata about the print job). The information about the content to be printed (print data) is not transmitted to the cloud service <NUM>.

The user who operated the client computer <NUM> then moves to the location where the printer <NUM> is located, and logs into the printer <NUM> by using the contactless card in S1004. The log in process involves the printer sending a user access request to the user access function <NUM> of the cloud service <NUM> including login information retrieved from the user's contactless card. If the login information matches a registered user in the database of the user access function of the cloud service <NUM>, the login is successful.

Once the user has successfully logged into the printer <NUM> (i.e. the authentication of the user was successful), the user is allowed to use functions of the printer <NUM>. "printing" is one of those functions, and when the user selects "printing", the printer <NUM> sends a request to the cloud service <NUM> for a list of print jobs in S1005. The UI server <NUM> of the cloud service <NUM> serves a UI page including the list of print jobs who's attribute information has been sent to the cloud service <NUM> and matching the identity of the user that logged in to the printer <NUM>.

In S1006, the requested list is transmitted from the cloud service <NUM> to the printer <NUM>. In S1007, the list provided by the cloud service <NUM> is displayed at the operation screen included in the user interface <NUM>. The names of print jobs are displayed on the user I/F <NUM> of the printer <NUM> so that the user can easily select a print job which he or she wishes to print at the printer <NUM>. In S1006, the cloud service <NUM> also provides the printer <NUM> with network address information of the client computer <NUM> that is storing the print data corresponding each job of the user.

In <NUM>, the user selects a print job for printing on the printer <NUM>, and in S1008, the printer <NUM> transmits a request to the client computer <NUM> for the print data using the address information received from the cloud service <NUM>. In S1009, the smart client <NUM> of the client computer <NUM> receives the request. The smart client <NUM> then contacts the central service <NUM> of the cloud service <NUM> with the identity of the printer <NUM> from which it received the request to print. In reply, the central service <NUM> of the cloud service <NUM> replies with a device information file (DIF file) for converting the PCL print data from the universal printer driver <NUM> stored in the queue <NUM> into a device specific print file suitable for printing by the printer <NUM>. When the smart client <NUM> receives the DIF file the smart client <NUM> converts the PCL print data requested by the printer <NUM> into a device specific print language file for the printer <NUM>. Then, the requested print data is transmitted from the client computer <NUM> to the printer <NUM> in step S1010. In S1011, printing is performed at the printer <NUM> based on the print data received from the client computer <NUM>.

The above described embodiment describes a situation in which the printer <NUM> in the HQ office receives UI information from the UI server <NUM> of the print server <NUM>. When print jobs are to be selected, the print jobs stored in the queue <NUM> on the print server <NUM> associated with the user logged in to the printer <NUM> are displayed for selection on the printer <NUM>. The printer <NUM> in the branch office, in contrast, receives a list of print jobs from the cloud service <NUM> associated with the user logged in to the printer <NUM>. Print data corresponding to these print jobs are stored on the user's client computer <NUM> until they are released to the printer <NUM> for printing.

In the modification, the user may use more than one client computer. In this case, if the user is in the HQ office, jobs from each client computer used by the user in the HQ office are sent to the queue <NUM> on the print server <NUM>. The list of jobs may be retrieved by the printer <NUM> as described in the previous paragraph. When printing from more than one client computer in the branch office, each client computer used by the user to print in the branch office sends attribute information to the cloud service <NUM>. The printer can display jobs who's attribute information is stored in the cloud service <NUM> for selection by the user at printer <NUM>. However, when the print jobs are selected for printing, the cloud service <NUM> will include different storage locations for different print jobs depending on which client computer they were printed from, because the print jobs are stored locally in queues on the client computers that they were printed from. Accordingly, the printer <NUM> needs to transmit separate requests in S1008 to each client computer to retrieve the print data. Each client computer also needs to separately respond to the request by requesting the DIF file for printer <NUM> and converting the print data in S1009 before transmitting the converted print data to the printer <NUM>.

In a further situation, if a user prints some print data in the branch office and prints some print data in the HQ office, some print data may be stored on the client computer <NUM> and some print data may be stored on the queue <NUM> of the print server <NUM>. There are several different ways of managing this situation. In a first case, the application <NUM> on the printer <NUM> of the HQ office may be provided with a function to switch between UI servers of the print server <NUM> and the cloud service <NUM>. This allows the user to separately view either his or her print jobs that are stored on the print server <NUM> or those print jobs who's attribute information is stored in the cloud service <NUM>. This first approach has some limitations. The user when in the HQ office can print data stored on the print server <NUM> and any data that are stored locally on client computers that are located on the HQ office internal network <NUM>. It is not possible to print data that are on client computers that are still located in the Branch Office internal network <NUM>. Further, if the user is visiting the branch office, the user can only print data that are stored on client computers in the branch office internal network <NUM> because print data stored on the print server <NUM> and on client computers that are on the HQ office internal network <NUM> are not accessible via the BO internal network <NUM>.

A second more flexible approach may be adopted. In the second approach, the synchronization illustrated in <FIG> is modified to include synchronization of print job information between the cloud service <NUM> and the print server <NUM>. This synchronization includes attribute information of the print data (e.g. print job name, number of pages, etc.) but does not include the print data itself (i.e. the PCL print job data or print data in another print language). The synchronization also includes information about the storage location of the print data i.e. whether the print data is stored in the queue <NUM> on the print server <NUM> or is stored on the client computer <NUM> and the identification information and/or location of that client computer <NUM>. When printing from printer <NUM> on the HQ office internal network, the user can view all his or her print jobs regardless of where they are printed because the attribute information is synchronized between the cloud service <NUM> and the print server <NUM>. The user may print any print data stored on the print server <NUM> or any print data stored on a client computer that is on the HQ office internal network <NUM> (such as a client computer that the user instructed the printing at the branch office and then brought back to the HQ office internal network <NUM>). When in the branch office, the user may print any print data stored on a client computer <NUM> on the branch office internal network <NUM>. Further, for data stored on the print server <NUM> connected to the HQ office internal network <NUM>, the user may request the print data for printing. In this case, the cloud service <NUM> requests the print data from the print server <NUM> and the print data including the PCL print data may be transferred to the printer <NUM> via the cloud service <NUM>. This process is typically slower than file transfers across the BO internal network <NUM>, which is why the print data is transferred on request from a user and the print data (PCL data or the like) is not synchronized between the print server <NUM> and the cloud service <NUM> by default.

As described above, in connection with <FIG>, configuration information is received by the smart client <NUM> which configures the behavior of the client computer to perform relevant steps described above in connection with <FIG> and <FIG>. However, these are not the only print workflows that could be configured to the smart client <NUM>. In a further embodiment, the steps of <FIG> are modified such that the smart client is configured to cause the print job to be sent to the printer <NUM> for storage rather than being stored in the queue <NUM> of the client computer in step S1002. In this case, when the user logs in to the printer, the printer retrieves the job list from the cloud service <NUM> in steps S1005 and S1006. However, for print jobs stored on the printer, there is no need to request the print data from the client <NUM>. The printer performs the steps of retrieving the DIF file from the cloud service <NUM> and converting the print data to printer specific print data for printing at the printer <NUM>.

A further example of a workflow that can be configured into the smart client in response to the request for configuration information in S802 of <FIG> is that the print job is sent to the cloud service for storage. In this example, the workflow in <FIG> is modified so that the print data is sent by the client computer to the cloud service for storage in step S1002 instead of being stored locally on the client computer <NUM>. In step <NUM> the request for print data is sent from the printer to the cloud service, which is storing the print job including the print job data, instead of the client computer <NUM>. Further, the conversion of the print job data using DIF files into printer-specific print data is performed directly on the cloud service before the printer-specific print data is sent to the printer for printing.

Claim 1:
A printing system for printing from a client computer at each of a first physical location and a second physical location, the system comprising:
the client computer;
a print server provided within an internal network of the first location;
a cloud service configured to be accessed via the internet at each of the first and second locations;
a first printer provided on the internal network of the first location;
a second printer provided on an internal network of the second location;
wherein the client computer comprises:
identification means configured to identify whether the client computer is connected to the internal network at the first location or connected to the internal network at the second location;
connection means configured to request configuration information that determines a workflow of the client computer from the cloud service, the request including location information identified by the identification means; and
reception means configured to receive the configuration information from the cloud service,
wherein the configuration information configures the client computer to perform:
in a case where the identification means identifies that the client computer is connected to the internal network at the first location, a workflow to send print data to the print server for printing; and
in a case where the identification means identifies that the client computer is on the internal network at the second location a workflow from one of:
storing the print data locally on the client computer for subsequent retrieval by the first or second printer for printing,
sending the print data from the client computer to the second printer for storage at the second printer and subsequent printing, and
sending the print data from the client computer to the cloud service for subsequent retrieval by the first or second printer for printing.