The present invention relates to methods and systems for providing printing services over a communications network. In particular, the present invention enables a user to obtain print jobs at an unspecified location which may be remote from the source of the print job. Spooling means are used to store a print job received via the network from a print job source. Polling means, which may be at a location remote from the print job source, are capable of polling the spooling means via the network to identify whether any print jobs associated with the polling means are available for printing at one or more associated printing means. A fee can be charged for the printing services provided.
As computer networks become more complex, the rate at which network configurations change continues to increase. Also, the increasingly frantic pace of the typical business traveler who juggles documents on multiple computers and is required to configure a traveling laptop computer to integrate into various changing networks makes it increasingly difficult to reliably and efficiently print even a simple document.
For example, a business traveler in a hotel may wish to print to a printer that the hotel provides for such purposes. Under the current state of the art, the user must first obtain the network ID of the printer along with some information about the type of printer. Then, a print driver for that specific printer must be installed on the user's computer, and the computer must be configured to connect to the printer. This may additionally involve configuring the computer to connect to the host network.
Further, in many cases, it is desirable to be able to prepare a document for printing prior to having the information concerning the destination printer. For example, it may be desirable to print a document from a mobile laptop connected via a wireless data connection while in transit to a meeting at a site the user has never visited before. Obtaining the information and configuring the laptop to be able to print to the printer becomes logistically infeasible.
These problems have typically been solved in the past by one of the following methods:
1. The document is e-mailed or otherwise transferred over a network to a computer already configured to print to the desired printer;
2. A portable computer is connected directly to the printer via a cable or infra-red, bypassing many of the difficulties of configuring the computer to print to a network computer;
3. A portable printer is transported to the desired location; or
4. The document is faxed to a fax machine.
Printing methods relating to network and distributed printing are known in the prior art. Such systems require either a private network or foreknowledge of the destination of a print job. These prior art methods comprise what is typically referred to as “push”, technology (i.e. technology in which a print job is directed to a specific known destination or printer).
In addition to the need for efficiency and ease of use is the need for security when sending, storing, or printing print jobs. Early in the life of the Internet, the need for securing an organization's local network from tampering, stealing, or vandalism by outsiders became very obvious. A type of gateway called a firewall was developed to meet this need. The firewall is designed to be a single, well-controlled access point between the outside, global, or wide-area network and the inside, local-area network. By carefully restricting the types of network traffic and the destinations where that traffic can flow, the firewall can provide effective protection.
Specific “holes” in the firewall are created for each type of traffic that is allowed through the gateway in each direction. Most organizations, for example, allow e-mail traffic in and out from their e-mail server, as well as web page client access from inside the firewall to servers located outside of it.
Many types of access between machines commonly used on a local network are normally prevented from going through the firewall. Specifically, file sharing, remote log-in, printing, and various other network-administration types of protocols are typically not allowed to be transported outside the firewall.
Another aspect of the firewall is that it is almost always administratively controlled by a centralized authority for the organization that owns the local area network—commonly the management information services (MIS) department of a company. Normal users generally have to make special requests that are approved at the upper levels of management to get configuration changes in the firewall. In the interest of maintaining security, these changes are often limited to specific point-to-point exceptions or “holes” in the firewall.
It is desirable by many users to be able to print from a machine on one local area network to a printer located on a different local area network with the data being transferred over a global network (e.g., the Internet) outside of the firewall of both local networks.
The current state of the art does have solutions for this problem. However, almost all of these solutions require the intervention of the firewall administrator. One example of a solution is the IPP—Internet Printing Protocol standard being promulgated by various vendors. This standard allows IPP-equipped printers to receive print jobs from remote clients over the Internet. However, the installation and use of IPP requires that a specific IPP hole be opened in the firewall by the network administrator.
It would be advantageous to be able to provide methods and systems that allow a user to print to a perhaps yet unknown destination printer or printer pool in a reliable, efficient and secure manner without the disadvantages of the above-mentioned techniques.
It would be further advantageous to provide a printing system based on “pull” technology (i.e. technology which enables a print job to be printed upon request, where the print file is only delivered in response to said request). Such technology would enable a system that allows a user to print to a destination printer or printer pool that may be located anywhere, in a reliable, efficient, and secure manner without the disadvantages of the above-mentioned techniques.
It would be further advantageous to have a solution that allows secure, efficient and easy-to-configure inter-network printing through a gateway firewall without the intervention of the network administrator.
It would be still further advantageous to make such printing services available to a user for a fee.
The methods and systems of the present invention provide the foregoing and other advantages.
The present invention relates to methods and systems for providing printing services over a communications network. In particular, the present invention enables a user to obtain print jobs at a location which may be unspecified, and which may be remote from the source of the print job. Spooling means are used to store a print job received via the network from a print job source. Polling means, which may be used at a location remote from the source of the print job, are capable of polling the spooling means via the network to identify whether any print jobs associated with the polling means are available for printing at one or more printing means associated with the polling means. A variety of revenue models may be used for the printing services provided.
In a preferred embodiment, printing services are provided via spooling means, which are capable of receiving and storing one or more print jobs from a print job source via a network. Polling means are provided which are capable of polling the spooling means via the network to identify a print job associated with the polling means.
The print job can originate from any suitable print job source, such as client means with an associated print driver, a web browser, a facsimile machine, a scanner, a telephone, an Internet appliance, a personal digital assistant, or the like. A print job can also originate on the spooling means itself or be obtained from a remote server. The client means may be a computer, a telephone, a personal digital assistant, an Internet appliance, or the like.
The identified print job can be transmitted from the spooling means to the polling means and printed at one or more printing means coupled to the polling means.
The polling means may periodically poll the spooling means to identify a print job associated with the polling means.
The network may comprise at least one of a local area network, a wide area network, a global network, the Internet, and any other type of network. The network may consist of multiple interconnected networks having multiple gateways and other features as is well known in the art.
In an alternate embodiment, the polling means may be located within a gateway firewall and the spooling means may be located outside the gateway firewall. The print job may be forwarded to the spooling means such that reconfiguration of the gateway firewall is not required. For example, the print job may be forwarded to the spooling means as web-style traffic and received at the polling means as web-style traffic.
The print job source may be located at and in communication with a first local area network and the polling means may be located at and in communication with a second local area network. The spooling means may be located outside of the first and second local area networks. The print job source may communicate with the spooling means via a first gateway firewall which controls access to the first local area network and the polling means may communicate with the spooling means via a second gateway firewall which controls access to the second local area network.
The polling means may be: (i) a stand-alone device connected to one or more printing means via a standard printer port, (ii) integrated into the firmware of the printing means, (iii) integrated into the software of a network print server, or (iv) of any other suitable configuration.
In an illustrative embodiment, a fee may be charged to access the spooling means. The fee can be based on one of print job size in bytes, print job size in number of pages, print job type, time for printing, time for storage, monthly fee, per use fee, lifetime membership, monthly membership, use of color, use of black and white, page size, location, convenience, number of images, print quality, image quality, or other suitable factors. The fee may be charged for providing a print job to the spooling means and/or retrieving a print job from the spooling means. The fee can be paid via client means associated with the print job source, the polling means, or other suitable devices, such as a smart card, a telephone, a personal digital assistant, or the like.
In another illustrative embodiment, one or more of the print job source application software, spooling means, and polling means may be sold, licensed, leased, rented, or distributed freely for revenue generating purposes. The print job source application software, spooling means, and polling means may be owned and/or operated by the same entity, or by different entities.
Print job source application software may be distributed to end users on a royalty-bearing or royalty-free basis, and the end user may be charged a fee for each print job submitted to the spooling means, and/or for each job retrieved from the spooling means.
The spooling means may be sold, rented, licensed or distributed freely to a print server provider. The print server provider may be, for example, a corporation, university, government agency, or other similar entity. The print server provider may provide services to end users for a fee for providing a print job to the spooling means and/or retrieving a print job from the spooling means.
The polling means may be sold, rented, licensed or distributed freely. The polling means may be provided for customer use at coffee shops, hotels, airports, libraries, bookstores, post offices, supermarkets, kiosks, print shops, retail outlets, or other suitable locations. End users of the polling means may be charged a fee for using the device.
The spooling means may store the one or more print job(s) in at least one spooling queue.
The print job may be encrypted at the print job source and decrypted at the polling means.
The print job may comprise a document provided by a content provider. The content provider may be one of a newspaper, a magazine, a periodical, a document provider, a graphic arts provider, a notification service, an Internet content provider, a merchant, a financial institution, a government agency, a shipping company, or the like.
The print job may be provided by the content provider on a subscription basis. A single print job may be provided by the content provider for printing by multiple users.
The polling means may comprise an interface means, a connection to the network, and a connection to one or more printing means.
In a further embodiment, each print job may be stored on the spooling means according to a personal identification number (PIN). The spooling means may communicate to the polling means a list of print jobs associated with the PIN which are stored at the spooling means. The selection of a print job from the list may be provided for (e.g., via interface means).
A plurality of print jobs may be stored on the spooling means according to the PIN. The PIN may be provided to the spooling means via one of interface means associated with the polling means, a telephone, a computer, an Internet appliance, a facsimile machine, a scanner, a personal digital assistant device, a dedicated terminal, or the like. The list of available print jobs may be displayed on one of: interface means associated with the polling means, a telephone, a computer, an Internet appliance, a facsimile machine, a scanner, a personal digital assistant device, a dedicated terminal, or the like. Selection of an available print job may be made via one of: interface means associated with the polling means, a telephone, a computer, an Internet appliance, a facsimile machine, a scanner, a personal digital assistant device, a dedicated terminal, or the like.
The polling means may be a portable device. The polling means may be operably associated with a variety of types of printing means.
In a further embodiment, the print job may be provided to the spooling means without a pre-determined print destination. Alternatively, a desired print location for the print job may be designated at the print job source. The designated print location may be communicated to the spooling means with the print job. The print job may be printed at the desired print location when the polling means at the desired print location polls the spooling means and identifies the print job.
Further, a substantially specific time for printing a print job may be designated such that the print job is only available for printing from the spooling means at the designated substantially specific time.
In addition, a lifetime of the print job may be designated, wherein said print job will be stored on the spooling means only for the designated lifetime.
A number of printings of the print job may be designated, wherein the print job can only be printed the designated number of times.
A list of recipients authorized to retrieve a print job may be designated, wherein the print job may only be printed by the designated recipients.
The print job may be one of a negotiable instrument, a stamp, a coupon, a certificate, a check, a unit of currency, a token, a receipt, or the like.
The print job source may be connected to the network using Dynamic Host Configuration Protocol (DHCP protocol), or any other suitable network configuration protocol. Similarly, the polling means may be connected to the network using DHCP protocol, or any other suitable network configuration protocol.
In a preferred embodiment, the polling means is capable of communicating printing means status to the spooling means. The printing means status may comprise at least one of a printing means ready indication, an on-line indication, toner level information, paper supply information, error information, or other appropriate status information.
A printing means operator can be notified when the printing means status indicates that a printing means requires attention. The operator can also be provided with vendor contact information to facilitate obtaining printing means supplies or service. Automatic on-line ordering of printing means supplies as required by printing means status can be provided (e.g., by the spooling means contacting predetermined preferred vendors).
The print job may include at least one of a document, a poster, an image, a coupon, a ticket, a certificate, a check, a list, a schedule, a periodical, a unit of currency, a negotiable instrument, postage, a bill of lading, a lottery or gaming ticket, a token, food stamps, a license, a permit, a pass, a passport, a ballot, a citation, identification, a copy-protection key, a proof-of-purchase, a warranty, a receipt, a transcript, a library card, or any other printable subject matter.
In an alternate embodiment, agent program means provides a directory of documents to the spooling means. The agent program means enables client means associated with the print job source to poll the spooling means to determine whether the spooling means requires a document identified in the directory to complete a print job. If so, the document can be uploaded from the client means to the spooling means.
The directory can be communicated to the polling means and presented at the polling means. Selection of a print job from the directory can be made (e.g., via interface means).
The directory may be presented via a visual presentation or an audio presentation. The client means may periodically poll the spooling means to determine whether the spooling means requires a document identified in the directory to complete a print job.
Communications with the spooling means may be enabled via at least one of a telephone, a personal digital assistant device, a computer, an Internet appliance, a web browser, a dedicated terminal, or the like. The communications with the spooling means may be via an audio interface or a visual interface.
Communication means for providing status of the print job stored on the spooling means may be provided. The status of the print job may comprise at least one of filename, file size, author, creation date, print job lifetime, image, title, contents, personal identification number, recipient, job number, or reference number. The communication means may be a telephone, a computer, an Internet appliance, a personal digital assistant device, a dedicated terminal, or any other suitable wireless or wired communication device.
The print job source may be one of a computer, a personal digital assistant device, an Internet appliance, a facsimile machine, a scanner, a telephone, a dedicated terminal, or other suitable source.
The polling means may be capable of polling multiple spooling means.
The spooling means may be capable of communicating with remote servers and receiving a print job from at least one of the remote servers.
The present invention enables print jobs to be sent to a spooling server for storage. The print jobs are subsequently delivered to one or more printers, on request, via a printer polling device. The printer polling device uses “pull” technology, which polls the spooling server so that the spooling server does not have to initiate a connection into a printer. In this manner print jobs can be securely printed anywhere, either automatically or at the request of a user who is authorized by the printer polling device and/or the spooling server. Since the spooling server need not initiate contact with any device, there is no potential breach of firewall security in a local network environment.
In one embodiment, a portable printer polling device is provided to enable retrieval and printing of documents from any location having Internet access and a printer. The spooling server functions as a repository that is accessible, e.g., via a global communication network such as the Internet, to authorized users at any time of day. Since the printer polling device polls the spooling server in order to obtain delivery of a print job, prior art push data flow techniques, which could compromise a local area network's security, are avoided. Moreover, compatibility with virtually all printers that may be connected to the network is provided, so that a document can be printed anywhere regardless of a specific printer's requirements. Many other advantages and features of the invention are set forth in the following description.
An illustrative embodiment of the invention is shown in
The print job can originate from any suitable print job source 10. As shown in
The identified print job can be transmitted from the spooling server 50 to the printer polling device 100 and printed at a printer 120 coupled to the printer polling device 100. Printer 120 may be a single printer or a pool of one or more printers coupled via a print server.
The printer polling device 100 may periodically poll the spooling server 50 to identify a print job associated with the printer polling device 100. Security is achieved by the fact that the printer 120 is not passively accepting any and all connections from the outside. The printer polling device 100 is initiating connections to a specific, trusted location, the spooling server 50.
The network 110 may comprise at least one of a local area network, a wide area network, a global network, the Internet, and any other type of network. The network 110 may consist of multiple interconnected networks having multiple gateways and other features as is well known in the art.
In an alternate embodiment, the printer polling device 100 may be located within a gateway firewall 70 and the spooling server may be located outside the gateway firewall 70. In addition, the print job source 10 may be located within a gateway firewall 30 and the spooling server may be located outside the gateway firewall 30.
The print job may be forwarded to and from the spooling server 50 such that reconfiguration of gateway firewalls 30 and 70 is not required. For example, the print job may be forwarded to the spooling server 50 as web-style traffic and received at the printer polling device 100 as web-style traffic. For example, a print driver 14 may accept print requests from application 15 like any other print driver, but instead of routing the print requests onto the network 110 using normal printer packets and well-known-ports, it routes the output of the print job to the spooling server 50 located outside of the firewall 30 using packets and ports that resemble web traffic.
Similarly, using web types of packets and ports, the printer polling device 100 is capable of polling the spooling server 50 and retrieving any print jobs that have been stored for the printer 120.
As shown in
The printer polling device 100 may be: (i) a stand-alone device connected to the printer 120 via a standard printer port, (ii) integrated into the firmware of the printer 120, (iii) integrated into the software of a network print server, or (iv) of any other suitable configuration. The printer polling function may also be integrated into the software on a stand-alone print server such as those manufactured by Electronics for Imaging, Inc. (Foster City, Calif.) under the trademarks Fiery® and EDOX®.
In a preferred embodiment, a fee may be charged to access the spooling server 50. The fee can be based on one of print job size in bytes, print job size in number of pages, print job type, time for printing, time for storage, monthly fee, per use fee, lifetime membership, monthly membership, use of color, use of black and white, page size, location, convenience, number of images, print quality, image quality, or other suitable factors. The fee may be charged for providing a print job to the spooling server 50 and/or retrieving a print job from the spooling server 50. The fee can be paid via a client device 12 associated with the print job source 10, the printer polling device 100, or any other suitable device capable of communicating with the spooling server, such as a smart card, a telephone, a personal digital assistant, or the like.
The spooling server 50 may store the one or more print job(s) in at least one spooling queue 52. The spooling server 50 may be maintained by a trusted party on the outside of the firewalls 30, 70. Alternatively, the spooling server 50 may be owned and maintained by the organizations desiring to utilize inter-network printing.
Since the communications amongst the print job source 10, the spooling server 50, and the printer polling device 100 may travel across public networks, it is very desirable to protect any proprietary or confidential information that may be embodied in the print jobs.
In a preferred embodiment, the print job may be encrypted at the print job source 10 and decrypted at the printer polling device 100. For example, the print job can be encrypted on the client device 12 such that it can only be printed by a person with the correct decryption key. In addition, printing of the document can be delayed until the key is physically entered at the printer polling device 100 (e.g., the recipient is physically present at the printer 120).
A flow diagram of an example of an encryption process used between the print job source 10, the spooling server 50 and the printer polling device 100 is shown in
The key 500 used for encryption 501 may be derived from an account number 510, a user's secret PIN (personal identification number) 520, and/or optionally some additional encryption key digits 530 supplied by the user. Simply concatenating the bits together from these sources provides a moderately secure key 500. Optionally, additional security may be achieved by using a more sophisticated hashing function.
The key 500 would be known only to the user and to the secure, trusted, spooling web server 50. The encrypted print job is sent to the spooling server 50 where it is decrypted (601) to facilitate reformatting 602 for the destination printer once it is known. The reformatted print job data is re-encrypted 603 using the same or similar key 500′ derived in the same manner as key 500 at the print job source 10. The encrypted print job is then transmitted from the spooling server 50 to the printer polling device 100. Once at the printer polling device 100, the print job is decrypted 701 using a key 500″ derived from the PIN 520, account number 510, and/or optional encryption key extension digits 530. The decrypted print job can then be forwarded to the printer 120 for printing.
The print job 11 may comprise a document provided by a content provider. The content provider may be one of a newspaper, a magazine, a periodical, a document provider, a graphic arts provider, a notification service, an Internet content provider, a merchant, a financial institution, a government agency, a shipping company, or the like. For example, instead of physically delivering the daily sports page, it is simply printed on a customer's home printer.
The print job 11 may be provided by the content provider on a subscription basis. A single print job may be provided by the content provider for printing by multiple users.
The printer polling device 100 may comprise a user interface, a connection to the network 110, and a connection to the printer 120.
In a further embodiment as shown in
A plurality of print jobs may be stored on the spooling server 50 according to the PIN 400 (e.g., in spooling queue 52). For example, a directory may be created for each user, and thus each PIN, registered with the spooling server 50. Each print job may additionally be assigned a unique job number at the time it is first received at the spooling server 50. Thereafter, the job number may be used to access the data files associated with that job unambiguously. Once a print job has been selected to be printed to a destination printer 120, the job number for the print job may be entered into a queue associated with the destination printer 120. Data structures suitable for maintaining a queue are well known in the art. In the preferred embodiment, the queue 52 is maintained in a C++ class known as a CList provided by Microsoft in their C++ class library.
When the printer polling device 100 polls the spooling server 50, the spooling server 50 checks to see if the queue for that printer 120 contains any print jobs. When the spooling server 50 finds a print job waiting to be printed, the data for that print job is retrieved from the file system, reformatted in a form suitable for the identified printer 120, and transmitted to the printer polling device 100.
The PIN 400 may be provided to the spooling server 50 via one of a user interface associated with the printer polling device 100, a telephone, a computer, an Internet appliance, a facsimile machine, a scanner, a personal digital assistant device, a dedicated terminal, or the like. The list of available print jobs may be displayed on one of a user interface associated with the printer polling device 100, a telephone, a computer, an Internet appliance, a facsimile machine, a scanner, a personal digital assistant device, a dedicated terminal, or the like. Selection of an available print job may be made via a user interface associated with the printer polling device 100, a telephone, a computer, an Internet appliance, a facsimile machine, a scanner, a personal digital assistant device, a dedicated terminal, or the like.
The printer polling device 100 may be a portable device. The printer polling device 100 may be operably associated with a variety of printer types.
In a further embodiment, the print job may be provided to the spooling server 50 without a pre-determined print destination. A user is able to interact with the printer polling device 100 and communicate the identification of the desired print destination for the user's print job to the spooling server 50. The user need not know anything more about the printer 120 than its location (which the user needs anyway to be able to retrieve the physical output pages).
Alternatively, a desired print location for the print job may be designated at the print job source 10. The designated print location may be communicated to the spooling server 50 with the print job. The print job may be printed at the desired print location when the printer polling device 100 at the desired print location polls the spooling server 50 and identifies the print job.
Further, a substantially specific time for printing a print job may be designated such that the print job is only available for printing from the spooling server 50 at the designated substantially specific time.
In addition, a lifetime of the print job may be designated, wherein said print job will be stored on the spooling server 50 only for the designated lifetime.
A number of printings of the print job may be designated, wherein the print job can only be printed from the spooling server 50 the designated number of times.
A list of recipients authorized to retrieve a print job may be designated, wherein the print job may only be printed by the designated recipients. For example, a document or series of documents may be provided to the spooling server 50 which document or documents can be received by a designated group of recipients, such as a company's sales force, newsgroup or other content subscribers, or other target audiences.
The print job may be one of a negotiable instrument, a stamp, a coupon, a certificate, a check, a unit of currency, a token, a receipt, or the like. In such circumstances, it may be desirable that the designated number of printings is one.
The print job source 10 may be connected to the network 110 using Dynamic Host Configuration Protocol (DHCP protocol), or any other suitable network configuration protocol. Similarly, the printer polling device 100 may be connected to the network 110 using DHCP protocol, or any other suitable network configuration protocol.
DHCP is a protocol which allows nodes to be added to a TCP/IP network dynamically without specific prior configuration of that node in the domain controller's hosts database. Each node desiring to connect announces itself to the DHCP server. The name of the node is sent to the DHCP server. The DHCP server then assigns the node a dynamic IP address as well as communicating the IP addresses of other key network services such as name servers, mailhosts, and gateways that are available. Once setup and enabled, this mechanism allows nodes to be added to the network without the intervention of a network administrator.
Ease of installation and configuration is therefore achieved through the use of DHCP by the fact that most local networks are configured to allow network devices to be added without the intervention of an administrator using DHCP. In addition, most local networks allow web access through their firewall (e.g., gateway firewalls 30 and 70). These two factors allow both the print job source 10 and the printer polling device 100 to connect and communicate to the spooling server 50 without the intervention of a network administrator. The user simply plugs in the printer polling device 100 and it accesses the network and starts polling the spooling server 50.
The invention may also be implemented using a virtual private network (VPN). A VPN is a mechanism that allows network nodes not directly connected to a local private network to behave as if they are locally connected to the network by forwarding the data packets through some type of public or intermediate network. For security, authentication of the node desiring to connect to the network is performed, as well as encryption of the contents of the forwarded packets. Various commercial products allow the setup and configuration of VPN's through various connectivity mechanisms such as dial-up ISP's, Cable Modems, and DSL on the client node end. The local network that is being connected to will require a router or router/firewall that implements the VPN protocol to allow the VPN connection. A VPN is made up of two components: L2TP (Layer 2 tunneling protocol) and IPSEC (Internet Protocol Security).
In a preferred embodiment, the printer polling device 100 is capable of communicating the status of the printer 120 to the spooling server 50. The printer status may comprise at least one of a printer ready indication, an on-line indication, toner level information, paper supply information, error information, or other appropriate status information.
A printer operator can be notified when the printer status indicates that the printer 120 requires attention. The operator can also be provided with vendor contact information to facilitate obtaining printer supplies or service. Automatic on-line ordering of printer supplies as required by printer status can be provided (e.g., by the spooling sever 50 contacting predetermined preferred vendors).
The print job may include at least one of a document, a poster, an image, a coupon, a ticket, a certificate, a check, a list, a schedule, a periodical, a unit of currency, a negotiable instrument, postage, a bill of lading, a lottery or gaming ticket, a token, food stamps, a license, a permit, a pass, a passport, a ballot, a citation, identification, a copy-protection key, a proof-of-purchase, a warranty, a receipt, a transcript, a library card, or any other printable subject matter.
As illustrated in
In an alternate embodiment as shown in
The agent program 200 may be downloaded and installed on the client device 12. The agent program 200 may be configured to make the contents of some or all of the directories 204 on the client device 12 available to the spooling server 50. Once installed and running, the agent program 200 initiates a connection to the spooling server 50 in the same way the printer polling device 100 does. The agent program may have a connection through a firewall, for example.
The directory of documents 204 may include application files such as a Microsoft Word .doc file, for example, or files that have been made into a print job (Postscript or PDF file) by printing “to a file” from some application.
The directory 204 can be communicated to the printer polling device 100 and presented at the printer polling device 100. Selection of a print job 11 from the directory can be made (e.g., via a user interface).
For example, the spooling server 50 will list those documents 13 being available from the agent program 200 whenever the user of that account is interacting with the printer polling device 100, or any other interface provided for communication to the spooling server 50 as described herein.
For example, the agent program 200 may periodically poll the spooling server 50 via polling interface 202. The interval of the polling can vary as desired and can be adjusted dynamically based upon such factors as traffic or requests for files. The communications between the agent program 200 and the spooling server 50 occur substantially as described in connection with
The agent program 200, upon receiving an “ACK” and the request information 207, opens the document 13 using the application it was created in and prints it to a temporary file 205 to create a print job 11. This print job 11 is then transmitted to the spooling server 50 via transmitter 203. The spooling server 50 uses its normal mechanism to then transmit the print job 11 to the destination printer 120.
Alternatively, the spooling server 50 may send an “ACK” followed by the name of a subdirectory. In that case, the agent program 200 returns the contents of that subdirectory. The spooling server 50 can then display those files to the user at the printer polling device 100 and allow one of the files to be selected, or allow additional navigation of directory 204 to take place.
The directory 204 may be presented via a visual presentation or an audio presentation. The client device 12 may periodically poll the spooling server 50 to determine whether the spooling server 50 requires a document from the directory 204 to complete a print job.
Communications with the spooling server 50 may be enabled via at least one of a telephone, a personal digital assistant device, a computer, an Internet appliance, a web browser, a dedicated terminal, or the like. The communications with the spooling server 50 may be via an audio interface or a visual interface.
A communication device for providing status of the print job stored on the spooling server 50 may be provided. The status of the print job may comprise at least one of filename, file size, author, creation date, print job lifetime, image, title, contents, personal identification number, recipient, job number, or reference number. The communication device may be a telephone, a computer, an Internet appliance, a personal digital assistant device, a dedicated terminal, or any other suitable wireless or wired communication device.
The print job source 10 may be one of a computer, a personal digital assistant device, an Internet appliance, a telephone, a facsimile machine, a scanner, a dedicated terminal, or other suitable source.
The printer polling device 100 may be capable of polling multiple spooling servers.
The spooling server 50 may be capable of communicating with other servers and receiving a print job from at least one of the other servers.
The print jobs submitted from the print job source 10 to the spooling server 50 may be generated in a page description language known as Postscript. Alternate choices for a page description language are PDF, Latex, or other similar languages. The size of the paper, various printer capabilities, and printable area dimensions may be assumed from a lowest common denominator set of capabilities common to most of the intended target printers.
Once the destination printer 120 is known, the page description language data needs to be converted into a form that can be understood by that printer 120. This process is shown in
On printers that can accept Postscript (or the PDL of choice) directly, no modification is necessary. For other, simpler printers, a lower level bitmap form of the page is required to be sent to the printer. In this case, the page description language needs to be rasterized into a bitmap form. In addition, the bitmap data needs to be formatted into the form understood by the printer 120. A raster image processor 815 determines the target printer type from the printer specific information 805 and selects an appropriate data format from available formats 820, 821, 822, 823. The raster image processor 815 places the print job 11 into a printer specific data file 850 for delivery to the printer polling device 100 to be printed at the target printer 120.
One common example of a data format used with simple printers is PCL (Printer Control Language), which is widely used in printers built by Hewlett Packard. Other printers built by Epson, for example use Epson's proprietary Epson-escape code sequences to format the bitmap data.
Alternatively, reformatting of the print job may take place at the printer 120, at the printer polling device 100, or at any other suitable device.
It will now be appreciated that the present invention provides improved methods and systems for providing printing services over a communications network in a secure manner without the need to specify the print destination. By using a printer polling device, the disadvantages of prior art push data flow techniques are overcome. Instead of having a remote device initiate contact with a print station behind a firewall, the present invention provides a printer polling device that polls a spooling server to determine if there are any documents to be printed by a printer associated with the printer polling device. Compatibility with all types of printers is also provided.
Although the invention has been described in connection with preferred embodiments thereof, those skilled in the art will appreciate that numerous adaptations and modifications may be made thereto without departing from the spirit and scope of the invention, as set forth in the following claims.
This application is a continuation of commonly assigned, co-pending U.S. patent application Ser. No. 09/688,457 filed on Oct. 16, 2000.
Number | Date | Country | |
---|---|---|---|
Parent | 09688457 | Oct 2000 | US |
Child | 10984464 | Nov 2004 | US |