Systems and methods for accessing a printing service

Disclosed are systems and methods for accessing a printing service. In one embodiment, a system and a method pertain to attempting to print to the printing service via an internal network address, and if the attempted printing fails, attempting to print to the printing service via an external network address.

BACKGROUND

Computer users often carry portable computing devices with them such as notebook computers, personal digital assistants (PDAs), and mobile telephones that include computing capabilities. Such users may at some point wish to print data from the portable computing device while remote from the user's work or home network. For instance, a mobile user may wish to print when at a coffee shop that provides network (e.g., Internet) access and printing services, or when staying at a hotel that comprises a hotel network that includes a public printing device.

In such scenarios, it is likely that the user has little or no knowledge of the printing services that are available for use. Furthermore, it is likely that the user lacks the software (or firmware) that is required to communicate with the public printing devices and to send print jobs to them. Although the user can be provided with information as to the availability of printing services as well as any software or firmware (e.g., drivers) that is necessary to print, a more automated public printing system would be preferable, particularly for less computer-savvy users. Moreover, desirable would be a public printing system that is substantially universal and therefore may be used within any network that is configured to support such public printing.

Several obstacles exist to the creation and implementation of such a public printing system. For instance, if the mobile user establishes a virtual private network (VPN) connection, that user may not be able to print to the public printing device. Therefore, if the user wishes to print out a copy of a document stored on his work network that he forgot to take along on a business trip, the user may not be able to print out that document at his hotel without first downloading it to his computing device and disconnecting the VPN connection.

The reason for such inability to access the public printing device, and any other local devices, is that, assuming that the VPN comprises a single tunnel VPN, all traffic from the computing device is routed through the VPN so that it cannot reach the local device except via the external network with which the VPN is formed. Although it would be possible to print a document stored on the external network using a proxy server of the external network, a problem exists as to how to connect to the printing device in that no one network address may be used to receive both internal and external print jobs.

SUMMARY

Disclosed are systems and methods for accessing a printing service. In one embodiment, a system and a method pertain to attempting to print to the printing service via an internal network address, and if the attempted printing fails, attempting to print to the printing service via an external network address.

DETAILED DESCRIPTION

Disclosed herein are example embodiments of systems and methods that facilitate public printing. Although particular embodiments are disclosed, these embodiments are provided for purposes of example only to facilitate description of the disclosed systems and methods.

Referring now in more detail to the drawings, in which like numerals indicate corresponding parts throughout the several views,FIG. 1illustrates an example system100that facilitates public printing. As indicated in this figure, the system100includes a local or internal network102to which a computing device104, a printing device106, and a server computer108are connected. The internal network102is assumed to comprise a network that is unfamiliar to the mobile user. By way of example, the internal network102comprises a hotel network to which the user can connect from the user's hotel room. Although a hotel network is explicitly identified for purposes of discussion, the internal network102more generally comprises any network (wired or wireless) that a mobile user may wish to connect to and print over.

As is depicted inFIG. 1, the computing device104can be a notebook (or “laptop”) computer. More generally, however, the computing device104comprises a portable computing device that the mobile user may carry, for instance, while on a business trip. Accordingly, the computing device104can, alternatively, comprise one of a personal digital assistant (PDA), tablet computer, mobile telephone, etc. Irrespective of its configuration, the computing device104is connectable to the internal network102such that the computing device can communicate with one or both of the printing device106and the server computer108. This connection may comprise either a wired connection or a wireless connection (e.g., via a radio frequency (RF) communication protocol). Stored on the computing device104is client software (or firmware) that is used to access and use a public printing service facilitated by a printing service manager.

The printing device106comprises any device that can receive print jobs via the internal network102and generate hardcopy documents associated with the received jobs. By way of example, the printing device106comprises a laser printer. However, other configurations are possible. For instance, the printing device106can be a multi-function peripheral (MFP) device that is capable of printing as well as performing other tasks such as copying, scanning, faxing, emailing, etc. As is described in greater detail below, the printing device106can comprise an embedded printing service manager that facilitates public printing.

The server computer108links the internal network102to an external wide area network (WAN)110, such as the Internet, and therefore acts as a gateway between the internal network and the WAN. As is described below, the server computer108is configured to intercept initial communications directed at devices located outside of the internal network102(i.e. on the WAN110). Such interception may be used to, for example, charge users for Internet access and/or offer printing services to the user. In the latter case, the server computer108may be configured to provide a link to the printing service manager that is, for instance, embedded in the printing device106.

In addition to acting as the network gateway, the server computer108(or a separate-computer if desired) may be used to provide the network address (e.g., Internet protocol (IP) address) of the printing service manager. Furthermore, the server computer108may facilitate billing for rendered printing services by, for instance, posting printing charges to a bill (e.g., hotel bill) or forwarding billing information to a credit card processing service connected to the WAN110. It is noted that, in some embodiments, the printing service manager, or a portion thereof, may exist on the server computer108or another device connected to the network102.

FIG. 2is a block diagram illustrating an example architecture for the computing device104shown inFIG. 1. As indicated inFIG. 2, the computing device104comprises a processing device200, memory202, a user interface204, and at least one input/output (I/O) device206. Each of these components is connected to a local interface208that, for instance, comprises one or more internal buses.

The processing device200is adapted to execute commands stored in memory202and can comprise a general-purpose processor, a microprocessor, one or more application-specific integrated circuits (ASICs), a plurality of suitably configured digital logic gates, or other electrical configurations that coordinate the overall operation of the computing device104. The memory202comprises any one or a combination of volatile memory elements (e.g., random access memory (RAM)) and nonvolatile memory elements (e.g., Flash memory, hard disk, etc.) that store or cache data.

The user interface204comprises the tools with which user data and commands are input into the computing device104. In situations in which the computing device104comprises a notebook computer, the user interface204at least comprises a keyboard and a display. In other embodiments, the user interface may comprise one or more of function keys, buttons, a touch-sensitive display, and a stylus.

The one or more I/O devices206facilitate communications with other devices and may include one or more serial, parallel, small computer system interface (SCSI), universal serial bus (USB), or IEEE 1394 (e.g., Firewire™) components, as well as one or more of a modulator/demodulator (e.g., modem), network card, wireless (e.g., RF) transceiver, or other communication component.

The memory202includes various programs, in software and/or firmware, including an operating system210, one or more user applications212, and a network browser214. The operating system210controls the execution of other software and provides scheduling, input-output control, file and data management, memory management, and communication control and related services. The user applications212comprise the programs that may be used to create and/or identify data (e.g., documents) that is to be printed by the service and, more particularly, by the printing device106. By way of example, these applications comprise one or more of a word processing application, a spreadsheet application, a presentation application, a scheduling application, etc. The network browser214comprises a program with which the user can access, via the internal network102, network sites and pages. By way of example, the network browser214is an Internet browser that retrieves Web sites and Web pages. The network browser214can be used to access the printing service manager.

In addition to those programs, the memory202comprises a public printing client216. As is described in greater detail below, the public printing client216operates in conjunction with the printing service manager to facilitate public printing. By way of example, the public printing client216can be downloaded from the printing service manager or from a suitable source on the WAN110. In any case, however, once stored on the computing device104, the public printing client216can be used to facilitate public printing on any network in which an appropriate printing service manager is provided, thereby providing a substantially universal printing solution.

As is further identified inFIG. 2, the public printing client216includes a print driver218that is used to translate documents into an appropriate print format. Alternatively, however, the driver218could comprise part of the operating system210. In preferred embodiments, the print driver218is a universal driver that can be used in conjunction with substantially any printing device that may be accessed via a compatible printing service manager. Examples of operation of the public printing client216, and its print driver218, are provided below.

FIG. 3is a block diagram illustrating an example architecture for the printing device106shown inFIG. 1. As indicated inFIG. 3, the printing device106, like the computing device104, comprises a processing device300, memory302, a user interface304, and at least one I/O device308, each of which is connected to a local interface308. In addition, however, the printing device106comprises a print engine306.

The processing device300, memory302, and I/O devices308have similar configurations to like-named components of the computing device104described in relation toFIG. 2. The user interface304comprises the components with which users input commands and modify device settings, such as a control panel that incorporates a display (e.g., liquid crystal display (LCD)) and a series of keys or buttons.

The memory302comprises various programs, in software and/or firmware, including an operating system312and, in this embodiment, a virtual machine314. The operating system312contains the various commands that are used to control the general operation of the printing device106. The virtual machine314is a program that functions as a self-contained operating environment and facilitates operation of a printing service manager316that, as noted above, facilitates public printing. Although a virtual machine is explicitly shown and identified, its functionality could, alternatively, be provided by software or firmware stored in the printing device106. In the embodiment ofFIG. 3, however, the manager316comprises an applet (e.g., written in the Chai™ programming language of the Hewlett-Packard Company) that includes an embedded server318, a print receiver322, and business logic324. It is noted that, although the printing service manager316is shown as executing on the printing device106, it could alternatively be provided on a separate device, such as the server computer108or another device connected to the internal network102, if desired.

The embedded server318is configured to serve network pages320, for instance Web pages, to requesting devices such as the computing device104. As is described below, these pages contain information for the user as to how to use the public printing system hosted by the printing service manager316, how to obtain public printing client software, the cost of the printing services, the methods of paying for those services, etc.

The print receiver322is a module that is configured to receive print jobs transmitted to the printing device106via the internal network102. By way of example, the print receiver322is specifically configured to receive hypertext transfer protocol (HTTP) and/or secure HTTP (HTTPS) communications. These communications can be received via an internal port326and an external port328that each has its own network address (e.g., universal resource locator (URL)) that is used to access the port. In some embodiments, the internal port326and the external port328may comprise the same port. When a print job is received, the print receiver322forwards the job to the print engine306for printing.

Once printing has been successfully performed, billing (assuming the printing services are provided on a pay basis) is facilitated using the business logic324. Operation of the business logic324depends upon the particular implementation and method of billing that is to be used. By way of example, the business logic324is configured to communicate printing charges to the server computer108for purposes of posting those charges to a bill (e.g., hotel bill) or contacting an appropriate credit card processing service.

Various programs (i.e. logic) have been described herein. These programs can be stored on any computer-readable medium for use by or in connection with any computer-related system or method. In the context of this document, a “computer-readable medium” is any electronic, magnetic, optical, or other physical device or means that contains or stores a computer program for use by or in connection with a computer-related system or method. These programs can used by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions.

An example system having been described above, an example of operation of the system in facilitating public printing will now be discussed in relation to the flow diagram ofFIGS. 4A and 4B. It is noted that process steps or blocks in the flow diagrams of this disclosure may represent modules, segments, or portions of code that include one or more executable instructions for implementing specific logical functions or steps in the process. Although particular example process steps are described, alternative implementations are feasible. Moreover, steps may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved.

Beginning with block400ofFIG. 4A, the computing device104(FIG. 1) is connected to the internal network102. By way of example, the computer user may physically connect his or her notebook computer to a hotel network (e.g., high speed data port in the user's hotel room). Once the computing device104is connected to the network102, the public printing client216(FIG. 2) on the computing device detects the connection, as indicated in block402. Such detection can be made because the public printing client216continuously runs in the background on the computing device104and therefore continually monitors the network state of the device. Notably, the public printing client216could have been installed in a previous public printing session. For example, during that session, the computer user could have been made aware of the availability of the client software and the printing services it facilitates by, for example, a Web page served by the server computer108. In such a case, the client software could have been obtained by, for instance, retrieving it from a server connected to the WAN110and operated by or on the behalf of the client software developer.

Referring next to block404, the public printing client216determines if a compatible public printing service is available on the internal network102. This determination can be made by performing a domain name service (DNS) lookup for a domain name associated with the public printing service that a DNS server (e.g., server computer108) is configured to recognize. By way of example, a DNS lookup of the name “mobile printing” can be performed. If a compatible public printing service is available, the public printing client216receives a network address of a printing service manager316(FIG. 3) that facilitates such public printing, as indicated in block406. More particularly, the public printing client216receives an Internet protocol (IP) address of the printing service manager316, for example stored on the printing device106or the server computer108as the case may be.

Once the public printing client216receives the address of the printing service manager316, the public printing client makes a call to that address so that the client can communicate with the printing service manager316, as indicated in block408. Such communications are supported using an appropriate network protocol, such as HTTP or HTTPS. Through these communications, the public printing client216receives one or more network addresses to which print jobs can be sent for printing by one or more available printing devices106, as indicated in block410. By way of example, the address or addresses comprise one or more URLs that identify input ports (e.g., the internal and external ports) of the printing service manager316on the printing device106or the server computer108. This information, as well as other information that facilitates printing, can, for instance, be contained in an extensible markup language (XML) document that is transmitted from the printing service manager316to the public printing client216. At this point, the public printing client216, and therefore the computing device104, has completed a public printing service discovery process and therefore is prepared to print to the printing device106.

The user can learn about the public printing service in various ways. For example, when the user opens the network browser214, the server computer108can intercept that connection and inform the user as to the availability of the public printing service and provide a link to the printing service manager316. Assuming the user wishes to use or is considering using the public printing service, the user can then select the link and receive one or more network (e.g., Web) pages from the embedded server318of the printing service manager316that explain how to use the service, how much the service costs (e.g., price per page), how the user is billed, where printed documents may be picked up, etc.

At print time, a print command is received and a printing device is selected, as indicated in block412ofFIG. 4B. By way of example, the print command and printing device selection are made using a “File,Print” process in which the user is presented with a list of available printing devices from which to choose. In such a case, the presented list includes the printing device106connected to the internal network102. After the print command and printing device selection have been entered, and assuming the user selected the printing device106, the public printing client216packages a print job and transmits it to the printing service manager316, as indicated in block414. Alternatively, however, packaging of the print job can have occurred previous to entry of the print command and printing device selection. Preferably, the print job is transmitted using a secure network protocol such as HTTPS. Regardless, the print job is transmitted to an address (e.g., URL) that the public printing client216received in block410described above.

After or while the print job is transmitted, the print receiver322of the printing service manager316receives the print job and forwards it to the print engine306for printing, as indicated in block416, so that, as indicated in block418, one or more hardcopy documents are generated. If the printing service manager316is executing, on a device separate from the printing device106, for instance on the server computer108, the print job is transmitted from that device to the printing device using substantially any available transmission method (wired or wireless). Once printing has been successfully completed (in whole or in part), the user is charged for the printing services rendered, as indicated in block420. As noted above, such a charge can be, for instance, added to a hotel bill or forwarded to a credit card processing service for debiting of a credit card account. Assuming no other documents are to be printed, flow for the public printing session is then terminated.

As noted above, several obstacles exist to the creation and implementation of a public printing system such as that described in relation toFIGS. 1-4. For instance, if the mobile user establishes a virtual private network (VPN) connection, that user may not be able to print directly to the public printing service. As is discussed in the following, however, this problem can be overcome by using an internal port (e.g., port326) that receives print jobs from within the internal network102, and an external port (e.g., port328), that receives print jobs from outside the internal network.

FIG. 5illustrates a VPN connection that has been established in the system100shown inFIG. 1. As is shown inFIG. 5, a VPN tunnel500extends from, the computing device104, along the internal network102, out from the server computer108(i.e. gateway), through the WAN110, through a firewall502, and to a VPN server504connected to an external network (e.g., an enterprise network)506behind the firewall. The tunnel500comprises an encrypted channel that permits the user to access data (e.g., documents) on the external network506as if the computing device104were physically connected to the network. For the purposes of this example, the tunnel500is a single path tunnel that routes all computing device traffic to the external network506. As is described in the following, documents available on the external network506can be accessed via the VPN tunnel500, and a print job for those documents can be delivered, for instance from a proxy server508, to an external port (e.g., port328) of the printing service manager316(FIG. 3) executing on the printing device (as indicated by line510) so as to facilitate “local” public printing.

As described above in relation toFIGS. 4A and 4B, the internal and external network addresses of the printing service manager ports can, for instance, be obtained through a discovery process that begins with a DNS lookup request for a domain name associated with the public printing service. In response to that request, the public printing client216(FIG. 2) receives an IP address of the printing service manager316. Once that address is received, the public printing client216makes a call to the printing service manager316to request various information from the manager including its internal and external network addresses.

As a response to the request, the public printing client216receives the internal and external network addresses from the printing service manager316, for instance in an XML document. In preferred embodiments, these addresses comprise separate URLs, the first of which may be used to access the printing service manager316from within the internal network102, and the second of which may be used to access the printing service manager from outside the network. At this point, the public printing client216, and therefore the computing device104, has completed a public printing service discovery process and is prepared to print to the printing service. Notably, this discovery process occurs prior to the user establishing a VPN connection.

Once the internal and external URLs have been obtained, irrespective of the manner in which they are obtained, the public printing client216can then attempt to access the printing service to utilize its printing capabilities. The manner in which this access is achieved depends upon whether a VPN has or has not been established. If no such connection has been established, print jobs may be sent directly to the internal port (internal URL). If, on the other hand, a VPN has been established, print jobs are routed through the external network506with which the VPN is formed to the external port (external URL) of the printing service manager316.

FIGS. 6A and 6Billustrate an embodiment of one method for accessing the printing service at print time. More particularly,FIGS. 6A and 6Bprovide an example of operation of the public printing client216(FIG. 2) in determining how to access the printing service manager316(FIG. 3) (e.g., executing on the printing device106(FIG. 1) or server computer108). As will be apparent from the discussion ofFIGS. 6Aand6B, the described method can he used irrespective of whether a VPN has or has not been established by the user.

Beginning with block600ofFIG. 6A, the public printing client216attempts to print to the printing service using the internal URL that it received during the discovery process described above. Specifically, the public printing client216sends initial communications to the printing service manager,316using a secure network protocol, such as HTTPS, to the internal URL. With reference to decision block602, it is next determined whether the printing service was successfully accessed. This determination is made from communications (or lack thereof) from the printing service manager316. For instance, if no response is received to the initial communications, the printing service has not been successfully accessed and the current print path is unavailable. Assuming a positive reply is received from the printing service manager316, the print data can be successfully transmitted to a printing device106and one or more hardcopy documents will be generated. In such a case, flow for the public printing client216is terminated for the current printing session.

If no reply is received from the printing service manager316, the user may have established a VPN connection that prevents such access. Accordingly, the public printing client216, next, as indicated in block604, attempts to print using the external URL that it received in the discovery process. After such an attempt is made, it is again determined whether the printing service was successfully accessed, as indicated in decision block606. If so, the print data can be successfully routed from the computing device104, along the VPN tunnel500to the external network506, and out to the external port328of the printing service manager. In such a case, one or more hardcopy documents will be generated by a printing device106.

If the printing service was not successfully accessed, however, it is possible that a VPN connection has been established by the user, but proxy information (e.g., host name of the proxy server, proxy server port, etc.) is required to transmit the print job via the proxy server508connected to the external network506. Accordingly, the public printing client216next, as indicated in block608, attempts to connect to the external URL using proxy information contained in the network browser214. In particular, the proxy configuration information stored in the system registry of the computing device104is consulted to determine if any proxy settings have been previously established and, if so, printing is again attempted using the proxy information. After such an attempt is made, it is again determined whether the printing service was successfully accessed, as indicated in decision block610. If so, the print job can be successfully routed to the external port328of the printing service manager316via the proxy server508, and one or more hardcopy documents will be generated.

Referring next to block612ofFIG. 6B, if printing was again unsuccessful, the user is notified, for instance with a pop up dialog box, that printing failed. This failure could have occurred because the computing device102is not connected to an appropriate network, or because the proxy information obtained from the network browser214is not correct for the proxy server508to be used to send the print job to the printing service. Because of the latter possibility, the user is prompted to provide the correct proxy information (block612). Once the user is so prompted, it is determined whether such proxy information is identified, as indicated in decision block614. If not, flow continues down to block620described below. If proxy information is provided, however, the public printing client216again attempts to connect to the external URL, this time using the proxy information provided by the user, as indicated in block616.

At this point, it is once more determined whether the service was successfully accessed, as indicated in decision block618. If so, printing will be successful and flow for the printing session is terminated. If, on the other hand, printing again failed, flow continues to block620at which the user is notified that public printing is not available. At this point, the user can, if desired, contact a system administrator to obtain help in accessing and printing to the printing service. Optionally, the user can be prompted for proxy information and printing retried several times before notifying the user that printing is not available.

As noted above, this process can be used irrespective of whether the user has established a VPN connection. If one path of access is determined to viable in the process, the public printing client216can, optionally, set that path as a default for the next printing session. If that later attempt at printing fails, however, the public printing client216can use a method such as that described in relation toFIGS. 6A and 6Bto access the printing service by another path.