US20060250638A1 - Print job spooling and distribution system - Google Patents

Print job spooling and distribution system Download PDF

Info

Publication number
US20060250638A1
US20060250638A1 US11/123,574 US12357405A US2006250638A1 US 20060250638 A1 US20060250638 A1 US 20060250638A1 US 12357405 A US12357405 A US 12357405A US 2006250638 A1 US2006250638 A1 US 2006250638A1
Authority
US
United States
Prior art keywords
printer
print job
printing
print
physical printer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US11/123,574
Other versions
US7593125B2 (en
Inventor
Zhencai Wang
Lu-Chun Liao
Katherine Lao
Hong Yan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyocera Technology Development Inc
Original Assignee
Kyocera Technology Development Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyocera Technology Development Inc filed Critical Kyocera Technology Development Inc
Priority to US11/123,574 priority Critical patent/US7593125B2/en
Assigned to KYOCERA TECHNOLOGY DEVELOPMENT, INC. reassignment KYOCERA TECHNOLOGY DEVELOPMENT, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LAO, KATHERINE B., LIAO, LU-CHUN, WANG, ZHENCAI, 04072005, YAN, HONG
Publication of US20060250638A1 publication Critical patent/US20060250638A1/en
Assigned to KYOCERA MITA CORPORATION, KYOCERA TECHNOLOGY DEVELOPMENT, INC. reassignment KYOCERA MITA CORPORATION ADD ONE ASSIGNEE REEL & FRAME 016537-0862 Assignors: KYOCERA TECHNOLOGY DEVELOPMENT, INC.
Application granted granted Critical
Publication of US7593125B2 publication Critical patent/US7593125B2/en
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • H04N1/00204Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a digital computer or a digital computer system, e.g. an internet server
    • H04N1/00236Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a digital computer or a digital computer system, e.g. an internet server using an image reading or reproducing device, e.g. a facsimile reader or printer, as a local input to or local output from a computer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32502Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device in systems having a plurality of input or output devices
    • H04N1/32523Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device in systems having a plurality of input or output devices a plurality of output devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32502Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device in systems having a plurality of input or output devices
    • H04N1/32545Distributing a job or task among a plurality of input devices or a plurality of output devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0008Connection or combination of a still picture apparatus with another apparatus
    • H04N2201/0034Details of the connection, e.g. connector, interface
    • H04N2201/0046Software interface details, e.g. interaction of operating systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0082Image hardcopy reproducer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Definitions

  • This invention relates to the field of printing systems, and more particularly to providing methods for simultaneous and efficient printing of large-volume documents to multiple printers.
  • Device drivers are generally known, including a printer driver.
  • printing from a computer occurs through the use of a printer driver.
  • the application Upon either an application launch or during a print command load time, the application will call an instance of the printer driver.
  • the present invention arose out of the above concerns associated with providing an improved method of print accounting.
  • the present invention includes a server-side application system for users to print large-volume documents among multiple printers simultaneously and efficiently. It enables users to capture, preview and then redistribute print jobs according to various pre-defined and user-customized printing policies.
  • the administrator can use an embodiment of the present invention to get the statistic information of job printings in a large organization.
  • the present invention will work with the printer driver and Post Processor to provide users enhanced ways of handling print jobs.
  • Embodiments of the present invention are designed for Windows NT4, Windows 2000 and Windows XP operating systems.
  • the present invention consists of four parts: Job Spooler, Job Capturer (VPort or virtual port), Job Distributor, and SpoolCenter Printer Configuration.
  • a computer system embodiment of the present invention is referred to as SpoolCenter.
  • Job Spooler provides users an integrated UI to manage jobs, set print policies for the job to print, configure print queue, manually print jobs to print queue and create SpoolCenter printers.
  • Job Spooler of the present invention enables the following functions: Preview job: zoom-in, zoom-out preview; Reprint job; Delete job; Hold job; Copy/Cut/Paste job; and Job accounting.
  • Job Capturer would capture any Driver output and save the output to the specified spool folder.
  • the print policy of VPort (virtual port) will be copied as the print policy of the jobs. According to the print options of the VPort, the jobs will be hold, scheduled or printed immediately.
  • Job Capturer of the present invention enables Add/Configure/Delete VPort, and Capture and save jobs.
  • Job Distributor will split the print job into multiple print jobs according to job configuration, features and requirement for printer device, and will manually or automatically distribute jobs to multiple devices.
  • Job Distributor of the present invention enables the following functions: (1) Direct Printing: Directly send the job to a specific printer. (2) Tandem Printing: Print multiple copies to multiple devices. If the application sends X copies of the job to SpoolCenter and the VPort has Y printers, then SpoolCenter will print X/Y copies of the job to each printer. (3) Broadcast Printing: Multiple the job sent from application and sent to the printer specified. (4) Cluster Printing: Cut the job from application into small pieces at page boundaries according to the settings and send each print one piece. (5) Time-scheduled Printing: Print jobs at the scheduled time. (6) Pool Printing: Print the job to the first available device in the queue. (7) Distribution Logs. (8) Notification to the clients.
  • SpoolCenter Printer Configuration is a utility to create SpoolCenter printer with a VPort according to the existing printers.
  • the default PDL of the SpoolCenter printer will be set to KPDL.
  • SpoolCenter can make full use of the devices on hand, split the documents and send them to multiple printers to complete the printing as soon as possible.
  • the benefits of the SpoolCenter include: Resources sharing: making full use of the printers on hand and improve their efficiency; No blocking: balance the loads among the printers; Speed: reduce the time of printing; and Economy: reduce the costs to buy more printers.
  • FIG. 1 is a simplified block diagram showing connection of a computing system to a printer.
  • FIG. 2 is a block diagram showing the VPort Monitor Core Architecture, in accordance with a preferred embodiment of the present invention.
  • FIG. 3 is a sample log file, in accordance with a preferred embodiment of the present invention.
  • FIG. 4 is a block diagram showing Tandem printing policy, in accordance with a preferred embodiment of the present invention.
  • FIG. 5 is a block diagram showing Direct printing policy, in accordance with a preferred embodiment of the present invention.
  • FIG. 6 is a block diagram showing Broadcast printing policy, in accordance with a preferred embodiment of the present invention.
  • FIG. 7 is a block diagram showing Cluster printing policy, in accordance with a preferred embodiment of the present invention.
  • FIG. 8 is a view of the GUI of the SpoolCenter VPort accounting, in accordance with a preferred embodiment of the present invention.
  • FIG. 9 is a view of the GUI of the SpoolCenter VPort accounting, in accordance with a preferred embodiment of the present invention.
  • FIG. 10 is a flowchart showing overall SpoolCenter and VPort processing, in accordance with a preferred embodiment of the present invention.
  • FIG. 11 is a block diagram showing additional SpoolCenter and VPort features, in accordance with a preferred embodiment of the present invention.
  • FIG. 1 shows a general printing system setup 100 that includes a host computer 110 and a printer 150 .
  • the printer 150 may be any device that can act as a printer, e.g. an inkjet printer, a laser printer, a photo printer, or an MFP (Multifunction Peripheral or Multi-Functional Peripheral) that may incorporate additional functions such as faxing, facsimile transmission, scanning, and copying.
  • MFP Multifunction Peripheral or Multi-Functional Peripheral
  • the host computer 110 includes an application 120 and a printer driver 130 .
  • the application 120 refers to any computer program that is capable of issuing any type of request, either directly or indirectly, to print information. Examples of an application include, but are not limited to, commonly used programs such as word processors, spreadsheets, browsers and imaging programs. Since the invention is not platform or machine specific, other examples of application 120 include any program written for any device, including personal computers, network appliance, handheld computer, personal digital assistant, handheld or multimedia devices that is capable of printing.
  • the printer driver 130 is a software interfacing with the application 120 and the printer 150 .
  • Printer drivers are generally known. They enable a processor, such as a personal computer, to configure an output data from an application that will be recognized and acted upon by a connected printer. The output data stream implements necessary synchronizing actions required to enable interaction between the processor and the connected printer. For a processor, such as a personal computer, to operate correctly, it requires an operating system such as DOS (Disk Operating System) Windows, Unix, Linux, Palm OS, or Apple OS.
  • DOS Disk Operating System
  • a printer I/O (Input/Output) interface connection 140 is provided and permits host computer 110 to communicate with a printer 150 .
  • Printer 150 is configured to receive print commands from the host computer and, responsive thereto, render a printed media.
  • Various exemplary printers include laser printers that are sold by the assignee of this invention.
  • the connection 140 from the host computer 110 to the printer 150 may be a traditional printer cable through a parallel interface connection or any other method of connecting a computer to a printer used in the art, e.g., a serial interface connection, a remote network connection, a wireless connection, or an infrared connection.
  • serial interface connection e.g., a serial interface connection, a remote network connection, a wireless connection, or an infrared connection.
  • the varieties of processors, printing systems, and connection between them are well known.
  • the present invention is suited for printer driver settings, and it is also suited for other device drivers.
  • the above explanations regarding FIG. 1 used a printer driver rather than a general device driver for concreteness of the explanations, but they also apply to other device drivers.
  • the following descriptions of the preferred embodiments generally use examples pertaining to printer driver settings, but they are to be understood as similarly applicable to other kinds of device drivers.
  • the present invention consists of four parts: Job Spooler, Job Capturer (VPort or virtual port), Job Distributor, and SpoolCenter Printer Configuration.
  • a computer system embodiment of the present invention is referred to as SpoolCenter.
  • the SpoolCenter Printer Configuration is a utility to create a SpoolCenter printer with a VPort basing on the existing driver.
  • a SpoolCenter printer is used to capture the jobs from the application. When users print documents from the application to the SpoolCenter printer, the raw printed data rendered by the driver will be captured, saved and sent to SpoolCenter. After the SpoolCenter printer is created, the PDL of the printer will be automatically set to KPDL.
  • the SpoolCenter Printer created by the utility will use the default settings of the driver, not the setting of the printer based on.
  • SpoolCenter Printer Configuration The main features of the SpoolCenter Printer Configuration are as follows: Create the printer automatically. Integrate VPort operations. Associate the printer with the SpoolCenter VPort. Set default PDL to KPDL automatically for driver.
  • the main benefits of the SpoolCenter Printer Configuration are as follows: (1) Easy to create a virtual printer. Build a connection between SpoolCenter and VPort and integrate the whole product; and (2) Simplify the interface to use SpoolCenter. All users will do is just to print the documents from applications to the virtual printers.
  • the VPort Monitor (Job Capturer) in essence is a printer port monitor installed under system Spooler and used by SpoolCenter to capture and forward print job.
  • VPort monitor When a VPort is set as the port used by some printer, all print jobs printed to this printer will be forwarded to VPort monitor.
  • the job raw data will be captured and saved to a pre-specified spool folder. According to the print options and print policy of the port, the print job might be either printed immediately, or hold temporarily, or printed at scheduled time from Spool Center.
  • a configuration file .CFG for the job will be created also under the spool folder.
  • .CFG file there are some document information and job information which will be used by SpoolCenter.
  • Each action of each port (also we call it Queue in SpoolCenter) of the port monitor will be logged into a file for accounting and trouble-shouting purposes.
  • VPort Monitor The main features of VPort Monitor are as follows: Any RAW data printer driver supported including driver. Spooling print jobs to different folders. Multiple spool option supported. Forwarding spooled jobs to multiple printers. All actions of the port being logged. Flexible design for extension. Seamless communication between the monitor and SpoolCenter and PostProcessor. Be able to run on Server without any intervention.
  • the main benefits of the VPort Monitor are as follows: (1) Capture and save print jobs. The printed jobs will be captured and saved to PS file for later use. (2) Forward print jobs to multiple printers. The spooled job can be forwarded to multiple printers according to the port setting. (3) Log all actions of print jobs for analysis. The monitor provides a tool for administrator to manage and analyze the jobs. (4) Share print jobs with SpoolCenter and PostProcessor. All print jobs captured can be shared with SpoolCenter and PostProcessor through message passing among them.
  • FIG. 2 is a block diagram showing the VPort Monitor Core Architecture, in accordance with a preferred embodiment of the present invention.
  • VPort Monitor Core is a set of classes, which are responsible to manipulate the port and job information, write log, communicate and exchange data with Spooler 210 , SpoolCenter 220 , and PostProcessor 230 .
  • the class set has multiple layers, upper layers call lower layers' functions or use the information provided by the lower layers. There is no inheritance relationship between any two classes in the set.
  • the classes except Monitor are also shared by SpoolCenter and PostProcessor. Any change of these classes will have some effects on SpoolCenter and PostProcessor.
  • CPrintPolicy class 290 is a class to indicate how to distribute and print the job. In an embodiment of the present invention, there are Cluster printing, Tandem Printing, Broadcast Printing and Direct Printing policies. Each policy has more detailed configuration.
  • CAPIJobDistributor class 295 is a class to distribute and print the jobs according to the print policy.
  • CPort class 270 is a class to save all information a SpoolCenter port needs. There is a printer list in the class to save all printer names to which the print jobs will be forwarded. Also there is some information that is used only by Monitor.
  • CJob class 280 is a class to manipulate job information, including loading and saving job information, sending jobs to printers. The job document configuration file is created, read, written in this class.
  • CPortList class 250 is a class to manipulate a list of VPort, including creating, configuring, deleting a port from the port list, loading and save port information to the registry, finding a port and enumerating all ports.
  • This class is the main class of port monitor core.
  • CLogger class 260 is a class to write all transactions to a log file for trouble-shooting, analyzing and accounting. The class defines all transaction codes and their descriptions.
  • Monitor 240 is actually not a class, but an interface with Spooler. It defines all APIs Spooler requires to be a standard port monitor, including adding, deleting, configuring, opening, reading, writing, enumerating port.
  • the port information saved to the registry includes SpoolPath, SpoolOption, Print Policy and ClusterPrinters.
  • SpoolPath is an absolute path to save the spool files.
  • ClusterPrinters is a null-terminated string that specifies the printers the port will forward the jobs to. Each printer name in the string is also terminated with a null (for example, “Kyocera Mita FS-1000+KX ⁇ Kyocera Mita FS-1800 KX ⁇ 00”).
  • SpoolOption is a DDWORD, 64-bit number.
  • FIG. 3 is a sample log file, in accordance with a preferred embodiment of the present invention. All operations applied to the port will be written to a log file for trouble shooting, analyzing and accounting.
  • the log file name is SpoolCenter.log, which is located in the spool folder of the port.
  • Each port has a log file.
  • the information in the log file includes date and time the operation happens, operation code, and other information for different categories: Log file: an operation comment; Queue: name, spool path, spool options, cluster printers, and an operation comment; and Job: own name, number of pages, job file full path, and an operation comment. If the number of pages is ⁇ 1, which means the page number is not available.
  • the port monitor When the port monitor captures a job, it will send messages to SpoolCenter and PostProcessor to inform them a new job is spooled if they are started. Also when a port is added, configured or deleted from Spooler, the port monitor will also send messages to SpoolCenter to inform it the port information is changed. After editing the configuration, PostProcessor can send the job to a printer with a SpoolCenter port. PostProcessor will send a message to SpoolCenter to acknowledge the new job added. Message information includes command, port name, file name if available. If the message is for queue, only command and port name are valid. If the message is for job, all three of them are valid.
  • Job Distributor There is another type of message from Job Distributor to SpoolCenter.
  • SpoolCenter will load Job distributor.
  • Job Distributor will create a thread to process the job distribution and printing. After the thread finishes the printing, the Job Distributor thread will send WM_PRINT_STATUS message to SpoolCenter to notify the status of the job distribution and printing. The status could be printed successfully or failed. If failed, an error code will be included in the message.
  • VPort Monitor can only be loaded and called through system spooler. So the UIs can only be shown up when spool APIs AddPort( ), ConfigurePort( ) and DeletePort( ) are called. Generally they show up when users add, configure and delete port on the Properties UI of an installed printer. SpoolCenter also have the functionalities to add, configure and delete a VPort.
  • the GUI for adding a port is described below.
  • the Page Navigation of adding port wizard gives a brief overview how the pages go back or forward upon different current situation. All pages can go bi-directionally on all Operating Systems.
  • VPort monitor After VPort monitor is installed and selected, after users click ‘New Port’ button, the first page to add VPort is a brief introduction page. Click ‘Next>’ to continue the installation. ‘Name the VPort’ page will show up. User has to give the port a name. If the name user entered exists as a port name, a message box below will show up to prompt user to give another name.
  • the port name should be less than 63 characters. The port name should not consist of character ‘ ⁇ ’ ‘*’, ‘/’ and ‘,’.
  • a ‘Select Print Option’ page will show up.
  • the default print option is ‘Spool only without printing’. If the print option needs to be changed, just select the one of the three options. If ‘Spool and print at scheduled time’ option is selected, you have to specify a future time to print jobs. Besides specifying a future date and time, you have to specify the print frequency. You can specify to print jobs at every 1-6 days, weeks or months. When ‘Print only new jobs in the queue’ is selected, only the jobs that were scheduled for printing during the most recent printing cycle will be printed. When it is cleared, jobs scheduled during all printing cycles will be printed.
  • ‘Spool File Folder’ Page will show up for user to enter or select a folder name to save the print job file. If the folder is not the default one and the folder does not exist, a message box will show up to prompt user to create the folder or not. If Yes is click, the folder is created and used as the spool folder. Otherwise, user has to enter or select another folder to spool the jobs. If the folder is used by other VPort, another message box will show up to prompt user. Another folder has to entered and selected. It does not allow to use the same spool folder for two different SpoolCenter ports. User also can click the ‘Browse . . . ’ button to select a folder name from ‘Browse for Folder’ dialog box. After enter or select a valid spool folder, click Next to continue. ‘Select the Printers’ Page will show up.
  • VPort can not forward a print job to another printer with VPort to avoid that the print jobs are send back and forth between printers endlessly.
  • Check the check box on the left of the printer name if you want the jobs to be forwarded to that printer. Please notice that highlighting a row or multiple rows in the printer list does not mean they will be used by the port.
  • Highlighting printers is used to change the order of the printers in the list.
  • the printers used by the port have the order.
  • the printers selected in the printer list should have different print port, because a general port can only be connected to only one physical printer. If multiple printers with the same port are selected, an error message box will show up.
  • the printers in the list have priorities when applying distribution.
  • the first printer has the highest priority and last printer has the lowest priority.
  • the job will be forwarded to the first printer since the job can not be split page by page.
  • To change the order of printer in the printer list just highlight the printer and use Move Up and Move Down buttons to move the highlighted printer up and down. You might press Ctrl+Click to select multiple printers to move them together. In this version, the number of printers selected is limited to 3. If there are more than 3 printers are selected, an error message will pop up. You have to uncheck some printers. After selecting the printers for the port, click Next. Then the ‘Set Print Policy’ page shows up.
  • a print policy has to be specified for this port to indicate how the job will be distributed and printed to the cluster printers.
  • Direct printing and Broadcast printing policy are job-based. They can be applied to the jobs in any formats.
  • Tandem Printing policy and Cluster Printing policy are always available in VPort configuration if there are multiple printers in the VPort printer group no matter whether the virtual printers using the VPort are set to KPDL or PCL/XL. That is because the VPort could be used by multiple virtual printers. It is users’ choice to use which print policy. Also when the VPort is created or configured, the port monitor may have no idea about which printer will use the VPort.
  • FIG. 4 is a block diagram showing Tandem printing policy, in accordance with a preferred embodiment of the present invention.
  • the job will be distributed to each printer of the cluster printers with the same number of copies 441 , 442 , 444 .
  • the total number of copies of the job is same as the number the user requires.
  • three physical printers 431 , 432 , 434 are associated with the VPort 420 .
  • Printer 3 433 is not associated with the VPort 420 .
  • FIG. 5 is a block diagram showing Direct printing policy, in accordance with a preferred embodiment of the present invention.
  • user can specify the job to be only printed on a specified physical printer 534 in the cluster printer list. Direct printing will directly forward the job to the specified printer 534 for printing.
  • FIG. 6 is a block diagram showing Broadcast printing policy, in accordance with a preferred embodiment of the present invention.
  • User can multiply the job received 610 and send the specified copies of the jobs to the printers in the cluster.
  • the button ‘Settings’ will be enabled. Click Settings to specify the number of copies for each printer as below. The default setting is one copy for each printer. The number of copies can be changed according to the requirement. If the number for a printer is changed to 0, the job will not be printed at that printer. If ‘Apply copy count to all printers’ is checked, when the copy number for a printer is changed the copy numbers for other printers will be changed to the same number as the current printer.
  • FIG. 7 is a block diagram showing Cluster printing policy, in accordance with a preferred embodiment of the present invention.
  • the job will be divided into small pieces according to specified policy and then distribute and print these small pieces to the printers in the list.
  • Optimized by printer speed the jobs will be distributed according to the speed of printers associated with the VPort.
  • SpoolCenter may have no idea to know the printing speed of printers from some manufacturers. If the printer group of VPort include both printers whose speeds are known and printers whose speeds are unknown, Cluster printing with optimized by printer speed policy may distribute the job to only printers whose speeds are known.
  • With ‘Equal pages. distribution’ pages of the print jobs will be distributed equally to all printers associated with the VPort. After selecting the print policy for the port, click Next. Then the confirmation page shows up. Then click Finish to complete adding the port. If the operation is successful, the UI just disappears and no more dialog box pops up again.
  • the Configure Port UI is for configuring the existing VPort. You can change any information of the VPort except its name. The detail instructions to change the respective values can be referred in ‘Add Port’.
  • the major UI difference is that Add Port uses wizard style to add a port one page by another with entering single information in one page and Configure Port is to configure single information in each tab in one dialog.
  • Another major UI difference is that Configure Port has more options to configure the behavior of the monitor. But Add Port Wizard just has default values for these options and these options do not have to be configured during adding the port.
  • Constraint 1 If current print policy is Tandem Printing or Cluster Printing, and on Printer Tab only one printer is checked, when you click other tabs or click OK to leave Printer Tab below message box will show up. Click OK, the print policy will be changed to Direct Printing; Click Cancel, the focus will go back to the Printer Tab.
  • Constraint 2 If current print policy is Direct Printing, and on Printer Tab the printer assigned to Direct Printing has been removed from VPort printer group, when you click other tabs or click OK to leave Printer Tab message box will show up. Click OK, the first printer in the new VPort printer group will be chosen for Direct Printing; Click Cancel, the focus will go back to the Printer Tab.
  • Constraint 3 If current print policy is Broadcast Printing, and on Printer Tab all printers assigned to Broadcast Printing have been removed from VPort printer group, when you click other tabs or click OK to leave Printer Tab message box will show up. Click OK, the all printers in the new VPort printer group will be chosen for Broadcast Printing with each printer one copy; Click Cancel, the focus will go back to the Printer Tab.
  • Constraint 4 If current print policy is Broadcast Printing, and on Printer Tab some printers, not all, assigned to Broadcast Printing have been removed from VPort printer group, when you click other tabs or click OK to leave Printer Tab below message box will show up. Click OK, the printers removed from the VPort printer group will also be removed from the Broadcast Printing printer group; Click Cancel, the focus will go back to the Printer Tab.
  • Constraints of Policy Tab in various embodiments of the present invention are described below.
  • the controls on the Policy Tab UI are same as the ones in Add Port Wizard except option ‘Apply print policy to all jobs in the queue’.
  • the default of this option is not checked. This option is enabled only when SpoolCenter is running. If SpoolCenter is not started, this option will be disabled. If SpoolCenter is started and the option is checked but SpoolCenter is closed before you click OK on the configuration page, this option will be automatically disabled and unchecked.
  • option ‘Apply spooling option to all jobs in the queue’ this option is also powerful and dangerous. It will overwrite the print policy of ALL jobs captured in the VPort. You can not undo the operation after clicking OK. The VPort monitor will save the status of option.
  • Add Port Wizard there are not such options for users to set. Add Port Wizard apply the default values for these options.
  • the default value of ‘Delete all jobs in the VPort when deleting the VPort’ is not checked.
  • the default value of ‘Display job distribution message when printing.’ is checked. If option ‘Delete all jobs in the VPort when deleting the VPort’ is checked, when the VPort is to be deleted a confirmation message will popup to ask if all jobs in the VPort will be deleted. If yes, all jobs as well as the log file will be deleted from the VPort. If not, the VPort will be deleted but the jobs still remains in the spool folder.
  • the confirmation message will not pop up to ask if all jobs in the VPort will be deleted.
  • the VPort will be deleted but the jobs still remains in the spool folder.
  • option ‘Display job distribution message when printing’ is checked, after a job is distributed and sent to the spooler a notification message will be sent to the machine which print the job. If the option is not checked, after distributing there will not be such a notification message sent out. After change the configuration, click OK to save the information. To discard the changes click Cancel button.
  • the SpoolCenter port is no long used, it can be deleted.
  • a confirmation dialog box will show up for you to confirm the deletion. Click Yes, the port will be deleted if it does not be used any printer. If the port is deleted successfully, all PS files under the spool folder still remain. Click No to cancel the deletion. If the port is being used by some printers, it can not be deleted. Below message box will shows up if you try to delete it from Printer Properties. If option ‘Delete all jobs in the VPort when deleting the VPort’ is checked, when the VPort is to be deleted a confirmation message will popup to ask if all jobs in the VPort will be deleted. If yes, all jobs as well as the log file will be deleted from the VPort.
  • VPort will be deleted but the jobs still remains in the spool folder. If the option is not checked, when the VPort to be deleted the confirmation message will not pop up to ask if all jobs in the VPort will be deleted. The VPort will be deleted but the jobs still remains in the spool folder.
  • FIG. 8 is a view of the GUI of the SpoolCenter, in accordance with a preferred embodiment of the present invention.
  • the menu bar Below the title is the menu bar.
  • the left pane is for all VPort and the jobs currently under the VPort.
  • the right pane is for displaying the detail information of the jobs under the specified queue, such as job name, status, document source, owner, number of pages, number of copies, job size and time submitted.
  • different icons can be used to show different settings for the VPorts: Spool without printing, Spool and print immediately, and Spool and print at scheduled time.
  • different icons can be used to show different statuses of the jobs: Held (Hold), Pre-processing, Printed, Printing, and Sheduled.
  • VPort Various operations on a VPort can be performed by selecting a VPort and using the VPort pull-down menu or by right-clicking on the selected VPort.
  • the VPort menu has some functional submenus: new, open, configure, delete, add SpoolCenter printer, view log, accounting, and properties.
  • the first four submenus are for user to manipulate the VPort.
  • ‘Add SpoolCenter Printer’ is to create a SpoolCenter printer with current port basing on the existing printer.
  • the next three submenus are to display some information of the VPort.
  • a right-click on a VPort name in the left pane causes a popup menu to show up. They are the operations that can be applied to the VPort at that moment. They are same as the submenus under VPort menu except ‘New’ submenu.
  • the View Log submenu is to display the latest 64 KB log information of the queue. If the log file of the queue is larger than 64 KB, this operation will just display the last 64 KB log information. See FIG. 3 for a for a portion of a sample log file.
  • FIG. 9 is a view of the GUI of the SpoolCenter VPort accounting, in accordance with a preferred embodiment of the present invention.
  • Queue accounting gives the end user statistic job information manipulated in the queue.
  • the accounting information has three categories: General, By Date, By Time.
  • General category gives the general jobs information of current queue: the number of jobs and pages in three categories, printed, hold and scheduled.
  • Date category gives the accounting information by date. This gives who at what timeframe printed/hold/scheduled how many jobs or pages.
  • Time category gives the accounting information by hours in a day. This gives during 24 hours who at what time frame printed/hold/scheduled how many jobs or pages.
  • Job accounting gives the end user statistic job information of a specified job.
  • the accounting information has three categories: General, LifeTime.
  • General category gives the general jobs information of current queue: the number of times the job was printed, hold and scheduled at a given time frame.
  • Life time category gives the activity information of the job in each day during a give time frame.
  • Time category gives the accounting information by hours in a day. You can get during 24 hours who at what time frame printed/hold/scheduled how many jobs or pages. Properties information of the specified job, including job name, job file name, status, source, owner, number of pages, size in byte and time submitted.
  • the Job menu may have some functional submenus: print/reprint, hold, schedule, cut/copy/paste, delete, delete all, select all, accounting, and properties.
  • Print/Reprint menu is used to send the job to SpoolCenter port to print/reprint. If there is only one printer in the VPort cluster printer list, only Direct Printing and Broadcast Printing policies will be enabled. If there are more than one printer in the VPort cluster printer list, there will be submenus for Print/Reprint according to different print policy. To print the document, user can have many choices to determine how the job will be printed.
  • FIG. 10 is a flowchart showing overall SpoolCenter and VPort processing, in accordance with a preferred embodiment of the present invention.
  • a print job is printed using SpoolCenter and Vport to a physical printer through the following three-step process.
  • an administrator uses GUI to configure a virtual port (VPort).
  • VPort virtual port
  • Each virtual port is associated with one or more physical printers and one or more virtual printers.
  • Each virtual printer in turn is configured from a physical printer. The details of the GUIs involved are described earlier.
  • step 1020 a job sent to a virtual printer typically from an application is spooled to the VPort associated with the virtual printer.
  • VPort associated with the virtual printer.
  • cluster printing policy comprises: (1) dividing a print job into pieces at page boundaries by applying dividing subpolicies of matching color, paper size, media type, finishing characteristics of the pieces with the corresponding characteristics of the physical printers (where the order of the application of the dividing subpolicies is customizable by an administrator); and (2) sending the pieces to the physical printers by applying sending subpolicies of optimization for fastest printing based on physical printers' speeds, and equal-page distribution.
  • dividing subpolicies of matching color, paper size, media type, finishing characteristics of the pieces with the corresponding characteristics of the physical printers (where the order of the application of the dividing subpolicies is customizable by an administrator); and (2) sending the pieces to the physical printers by applying sending subpolicies of optimization for fastest printing based on physical printers' speeds, and equal-page distribution.
  • user-customizable weights and preferences can be used to control the degree to which one subpolicy takes precedence over the other subpolicy.
  • a large 1000-page document may be divided into three pieces and sent to three printer
  • FIG. 11 is a block diagram showing additional SpoolCenter and VPort features, in accordance with a preferred embodiment of the present invention.
  • Block 1110 represents the features of Pool Printing and Recovery Printing. Both of them require a bidirectional communication connection to the physical printer(s) to monitor their status. SNMP (Simple Network Management Protocol) queries are sent to network printer(s) to check their status. Through the language monitor of the printer driver, PJL (Printer Job Language) commands are sent to local printer(s) to check their status. An administrator uses GUI to send a print job to physical printer(s) associated with the virtual port using Pool Printing policy (wherein a job is sent to the first available and functional printer according to the result of the bidirectional communication) and Recovery Printing policy (wherein, after a printing failure of a job, the job is transferred to an available and functional printer in the queue). Where two or more physical printers are available and functional, a printer can be selected by user-customizable order preference list, or by matching characteristics of the job with the characteristics/capabilities of the printers to find the best match as in Cluster printing policy,
  • Block 1120 represents the feature whereby a user can use GUI to select print job(s) from the print jobs spooled to a virtual port, and enabling Zoom-in and Zoom-out preview of the selected job(s) in separate window(s).
  • Page independence refers to a PostScript file that conforms to the Adobe Document Structuring Conventions (ADSC). Each page of the document will be a self-contained object. This is essential if the PostScript pages are to be extracted and printed on a different printer or previewed out of order.
  • only page independent jobs can be printed through cluster printing policy because the cluster printing will break up the job into small jobs on the base of pages and send these small jobs to multiple printers. That is the reason that the cluster printing requires jobs to be page independent.
  • Page dependence means there are some resources, such as fonts, patterns, or some PS commands, shared among pages, which makes the pages not self-contained. The pages can not be printed or preview out of order.
  • Block 1130 represents other accounting features in addition to those described in connection with FIG. 9 .
  • User can use GUI to select a virtual port and display accounting information comprising general accounting information about status, the number of jobs, number of pages of the print jobs spooled to the virtual port, and by-date and by-time accounting information. See the descriptions accompanying FIG. 9 .
  • printer drivers rather than general device drivers for concreteness of the explanations, but they also apply to other device drivers.
  • the foregoing descriptions of the preferred embodiments generally use examples pertaining to printer driver settings, but they are to be understood as similarly applicable to other kinds of device drivers.

Abstract

Method for efficient printing of large-volume documents to multiple printers, comprising GUI for administrators to configure a virtual port associated with physical and virtual printers; print job to a virtual printer spooled to the associated virtual port; and administrators sending spooled print job to the associated physical printers. Options include Spool without printing, Spool and print immediately, and Spool and print at a scheduled time. Printing policies include Tandem (the same copies to printers), Direct (to one printer), Broadcast (specified copies to printers), and Cluster (a print job is divided into pieces at page boundaries). Cluster dividing subpolicies match color, paper size, media type, and finishing characteristics of the pieces with the printer characteristics, and sending subpolicies optimize based on printer speeds and distribute equal number of pages. Bidirectional communication and monitoring using SNMP and PJL enable Pool (the first available printer) and Recovery (job transfer after a failure) printing policies. Methods also include job previewing and accounting.

Description

    CROSS-REFERENCES TO RELATED APPLICATIONS
  • Not Applicable
  • FEDERALLY SPONSORED RESEARCH
  • Not Applicable
  • SEQUENCE LISTING OR PROGRAM
  • Not Applicable
  • FIELD OF THE INVENTION
  • This invention relates to the field of printing systems, and more particularly to providing methods for simultaneous and efficient printing of large-volume documents to multiple printers.
  • BACKGROUND OF THE INVENTION
  • Device drivers are generally known, including a printer driver. Typically, printing from a computer occurs through the use of a printer driver. Upon either an application launch or during a print command load time, the application will call an instance of the printer driver. In a large company, where large-volume documents are printed, there is a need for a simultaneous and efficient printing of large-volume documents to multiple printers. Reduction in time and cost can be achieved by resource sharing and load balancing when printing to multiple printers. The present invention arose out of the above concerns associated with providing an improved method of print accounting.
  • SUMMARY OF THE INVENTION
  • Methods, computer program products, computing and printing systems for simultaneous and efficient printing of large-volume documents to multiple printers are described. The present invention includes a server-side application system for users to print large-volume documents among multiple printers simultaneously and efficiently. It enables users to capture, preview and then redistribute print jobs according to various pre-defined and user-customized printing policies. The administrator can use an embodiment of the present invention to get the statistic information of job printings in a large organization. As a major part of Document Solution, the present invention will work with the printer driver and Post Processor to provide users enhanced ways of handling print jobs. Embodiments of the present invention are designed for Windows NT4, Windows 2000 and Windows XP operating systems.
  • The present invention consists of four parts: Job Spooler, Job Capturer (VPort or virtual port), Job Distributor, and SpoolCenter Printer Configuration. A computer system embodiment of the present invention is referred to as SpoolCenter.
  • Job Spooler provides users an integrated UI to manage jobs, set print policies for the job to print, configure print queue, manually print jobs to print queue and create SpoolCenter printers. Job Spooler of the present invention enables the following functions: Preview job: zoom-in, zoom-out preview; Reprint job; Delete job; Hold job; Copy/Cut/Paste job; and Job accounting.
  • Job Capturer (VPort) would capture any Driver output and save the output to the specified spool folder. The print policy of VPort (virtual port) will be copied as the print policy of the jobs. According to the print options of the VPort, the jobs will be hold, scheduled or printed immediately. Job Capturer of the present invention enables Add/Configure/Delete VPort, and Capture and save jobs.
  • Job Distributor, according to the redistribution rules pre-defined by users, will split the print job into multiple print jobs according to job configuration, features and requirement for printer device, and will manually or automatically distribute jobs to multiple devices. Job Distributor of the present invention enables the following functions: (1) Direct Printing: Directly send the job to a specific printer. (2) Tandem Printing: Print multiple copies to multiple devices. If the application sends X copies of the job to SpoolCenter and the VPort has Y printers, then SpoolCenter will print X/Y copies of the job to each printer. (3) Broadcast Printing: Multiple the job sent from application and sent to the printer specified. (4) Cluster Printing: Cut the job from application into small pieces at page boundaries according to the settings and send each print one piece. (5) Time-scheduled Printing: Print jobs at the scheduled time. (6) Pool Printing: Print the job to the first available device in the queue. (7) Distribution Logs. (8) Notification to the clients.
  • SpoolCenter Printer Configuration is a utility to create SpoolCenter printer with a VPort according to the existing printers. The default PDL of the SpoolCenter printer will be set to KPDL.
  • In a big company, millions of copies of documents, such as bills or statements, are required to be printed. It could take very long time to complete. SpoolCenter can make full use of the devices on hand, split the documents and send them to multiple printers to complete the printing as soon as possible. The benefits of the SpoolCenter include: Resources sharing: making full use of the printers on hand and improve their efficiency; No blocking: balance the loads among the printers; Speed: reduce the time of printing; and Economy: reduce the costs to buy more printers.
  • The invention will be more fully understood upon consideration of the detailed description below, taken together with the accompanying drawings.
  • DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a simplified block diagram showing connection of a computing system to a printer.
  • FIG. 2 is a block diagram showing the VPort Monitor Core Architecture, in accordance with a preferred embodiment of the present invention.
  • FIG. 3 is a sample log file, in accordance with a preferred embodiment of the present invention.
  • FIG. 4 is a block diagram showing Tandem printing policy, in accordance with a preferred embodiment of the present invention.
  • FIG. 5 is a block diagram showing Direct printing policy, in accordance with a preferred embodiment of the present invention.
  • FIG. 6 is a block diagram showing Broadcast printing policy, in accordance with a preferred embodiment of the present invention.
  • FIG. 7 is a block diagram showing Cluster printing policy, in accordance with a preferred embodiment of the present invention.
  • FIG. 8 is a view of the GUI of the SpoolCenter VPort accounting, in accordance with a preferred embodiment of the present invention.
  • FIG. 9 is a view of the GUI of the SpoolCenter VPort accounting, in accordance with a preferred embodiment of the present invention.
  • FIG. 10 is a flowchart showing overall SpoolCenter and VPort processing, in accordance with a preferred embodiment of the present invention.
  • FIG. 11 is a block diagram showing additional SpoolCenter and VPort features, in accordance with a preferred embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that these specific details need not be used to practice the present invention. In other instances, well known structures, interfaces, and processes have not been shown in detail in order not to unnecessarily obscure the present invention.
  • FIG. 1 shows a general printing system setup 100 that includes a host computer 110 and a printer 150. Here, the printer 150 may be any device that can act as a printer, e.g. an inkjet printer, a laser printer, a photo printer, or an MFP (Multifunction Peripheral or Multi-Functional Peripheral) that may incorporate additional functions such as faxing, facsimile transmission, scanning, and copying.
  • The host computer 110 includes an application 120 and a printer driver 130. The application 120 refers to any computer program that is capable of issuing any type of request, either directly or indirectly, to print information. Examples of an application include, but are not limited to, commonly used programs such as word processors, spreadsheets, browsers and imaging programs. Since the invention is not platform or machine specific, other examples of application 120 include any program written for any device, including personal computers, network appliance, handheld computer, personal digital assistant, handheld or multimedia devices that is capable of printing.
  • The printer driver 130 is a software interfacing with the application 120 and the printer 150. Printer drivers are generally known. They enable a processor, such as a personal computer, to configure an output data from an application that will be recognized and acted upon by a connected printer. The output data stream implements necessary synchronizing actions required to enable interaction between the processor and the connected printer. For a processor, such as a personal computer, to operate correctly, it requires an operating system such as DOS (Disk Operating System) Windows, Unix, Linux, Palm OS, or Apple OS.
  • A printer I/O (Input/Output) interface connection 140 is provided and permits host computer 110 to communicate with a printer 150. Printer 150 is configured to receive print commands from the host computer and, responsive thereto, render a printed media. Various exemplary printers include laser printers that are sold by the assignee of this invention. The connection 140 from the host computer 110 to the printer 150 may be a traditional printer cable through a parallel interface connection or any other method of connecting a computer to a printer used in the art, e.g., a serial interface connection, a remote network connection, a wireless connection, or an infrared connection. The varieties of processors, printing systems, and connection between them are well known.
  • The present invention is suited for printer driver settings, and it is also suited for other device drivers. The above explanations regarding FIG. 1 used a printer driver rather than a general device driver for concreteness of the explanations, but they also apply to other device drivers. Similarly, the following descriptions of the preferred embodiments generally use examples pertaining to printer driver settings, but they are to be understood as similarly applicable to other kinds of device drivers.
  • The present invention consists of four parts: Job Spooler, Job Capturer (VPort or virtual port), Job Distributor, and SpoolCenter Printer Configuration. A computer system embodiment of the present invention is referred to as SpoolCenter. The SpoolCenter Printer Configuration is a utility to create a SpoolCenter printer with a VPort basing on the existing driver. A SpoolCenter printer is used to capture the jobs from the application. When users print documents from the application to the SpoolCenter printer, the raw printed data rendered by the driver will be captured, saved and sent to SpoolCenter. After the SpoolCenter printer is created, the PDL of the printer will be automatically set to KPDL. The SpoolCenter Printer created by the utility will use the default settings of the driver, not the setting of the printer based on. If the same settings are required, users have to go to the SpoolCenter printer properties to change them. The main features of the SpoolCenter Printer Configuration are as follows: Create the printer automatically. Integrate VPort operations. Associate the printer with the SpoolCenter VPort. Set default PDL to KPDL automatically for driver. The main benefits of the SpoolCenter Printer Configuration are as follows: (1) Easy to create a virtual printer. Build a connection between SpoolCenter and VPort and integrate the whole product; and (2) Simplify the interface to use SpoolCenter. All users will do is just to print the documents from applications to the virtual printers.
  • The VPort Monitor (Job Capturer) in essence is a printer port monitor installed under system Spooler and used by SpoolCenter to capture and forward print job. When a VPort is set as the port used by some printer, all print jobs printed to this printer will be forwarded to VPort monitor. The job raw data will be captured and saved to a pre-specified spool folder. According to the print options and print policy of the port, the print job might be either printed immediately, or hold temporarily, or printed at scheduled time from Spool Center.
  • While the spooled raw data is saved to .PS, .PCL, .XL, .SPL, .SMF, .PDF, .GDI files in the spool folder according to the raw data type, a configuration file .CFG for the job will be created also under the spool folder. Inside .CFG file there are some document information and job information which will be used by SpoolCenter. Each action of each port (also we call it Queue in SpoolCenter) of the port monitor will be logged into a file for accounting and trouble-shouting purposes.
  • The main features of VPort Monitor are as follows: Any RAW data printer driver supported including driver. Spooling print jobs to different folders. Multiple spool option supported. Forwarding spooled jobs to multiple printers. All actions of the port being logged. Flexible design for extension. Seamless communication between the monitor and SpoolCenter and PostProcessor. Be able to run on Server without any intervention. The main benefits of the VPort Monitor are as follows: (1) Capture and save print jobs. The printed jobs will be captured and saved to PS file for later use. (2) Forward print jobs to multiple printers. The spooled job can be forwarded to multiple printers according to the port setting. (3) Log all actions of print jobs for analysis. The monitor provides a tool for administrator to manage and analyze the jobs. (4) Share print jobs with SpoolCenter and PostProcessor. All print jobs captured can be shared with SpoolCenter and PostProcessor through message passing among them.
  • FIG. 2 is a block diagram showing the VPort Monitor Core Architecture, in accordance with a preferred embodiment of the present invention. VPort Monitor Core is a set of classes, which are responsible to manipulate the port and job information, write log, communicate and exchange data with Spooler 210, SpoolCenter 220, and PostProcessor 230. The class set has multiple layers, upper layers call lower layers' functions or use the information provided by the lower layers. There is no inheritance relationship between any two classes in the set. The classes except Monitor are also shared by SpoolCenter and PostProcessor. Any change of these classes will have some effects on SpoolCenter and PostProcessor.
  • CPrintPolicy class 290 is a class to indicate how to distribute and print the job. In an embodiment of the present invention, there are Cluster printing, Tandem Printing, Broadcast Printing and Direct Printing policies. Each policy has more detailed configuration. CAPIJobDistributor class 295 is a class to distribute and print the jobs according to the print policy. CPort class 270 is a class to save all information a SpoolCenter port needs. There is a printer list in the class to save all printer names to which the print jobs will be forwarded. Also there is some information that is used only by Monitor. CJob class 280 is a class to manipulate job information, including loading and saving job information, sending jobs to printers. The job document configuration file is created, read, written in this class. Obviously this class use CPort information. The print job is based on the VPort (Queue). Each queue could have multiple print jobs. CPortList class 250 is a class to manipulate a list of VPort, including creating, configuring, deleting a port from the port list, loading and save port information to the registry, finding a port and enumerating all ports. This class is the main class of port monitor core. CLogger class 260 is a class to write all transactions to a log file for trouble-shooting, analyzing and accounting. The class defines all transaction codes and their descriptions. Monitor 240 is actually not a class, but an interface with Spooler. It defines all APIs Spooler requires to be a standard port monitor, including adding, deleting, configuring, opening, reading, writing, enumerating port.
  • The port information saved to the registry includes SpoolPath, SpoolOption, Print Policy and ClusterPrinters. SpoolPath is an absolute path to save the spool files. ClusterPrinters is a null-terminated string that specifies the printers the port will forward the jobs to. Each printer name in the string is also terminated with a null (for example, “Kyocera Mita FS-1000+KX\Kyocera Mita FS-1800 KX\00”). SpoolOption is a DDWORD, 64-bit number.
  • FIG. 3 is a sample log file, in accordance with a preferred embodiment of the present invention. All operations applied to the port will be written to a log file for trouble shooting, analyzing and accounting. The log file name is SpoolCenter.log, which is located in the spool folder of the port. Each port has a log file. The information in the log file includes date and time the operation happens, operation code, and other information for different categories: Log file: an operation comment; Queue: name, spool path, spool options, cluster printers, and an operation comment; and Job: own name, number of pages, job file full path, and an operation comment. If the number of pages is −1, which means the page number is not available.
  • Communications between SpoolCenter, PostProcessor, and Job Distributor are described below. When the port monitor captures a job, it will send messages to SpoolCenter and PostProcessor to inform them a new job is spooled if they are started. Also when a port is added, configured or deleted from Spooler, the port monitor will also send messages to SpoolCenter to inform it the port information is changed. After editing the configuration, PostProcessor can send the job to a printer with a SpoolCenter port. PostProcessor will send a message to SpoolCenter to acknowledge the new job added. Message information includes command, port name, file name if available. If the message is for queue, only command and port name are valid. If the message is for job, all three of them are valid. There is another type of message from Job Distributor to SpoolCenter. When a job will be distributed and printed, SpoolCenter will load Job distributor. And Job Distributor will create a thread to process the job distribution and printing. After the thread finishes the printing, the Job Distributor thread will send WM_PRINT_STATUS message to SpoolCenter to notify the status of the job distribution and printing. The status could be printed successfully or failed. If failed, an error code will be included in the message.
  • Aspects of the UI (User Interface) of the present invention are described below. In a preferred embodiment of the present invention, VPort Monitor can only be loaded and called through system spooler. So the UIs can only be shown up when spool APIs AddPort( ), ConfigurePort( ) and DeletePort( ) are called. Generally they show up when users add, configure and delete port on the Properties UI of an installed printer. SpoolCenter also have the functionalities to add, configure and delete a VPort.
  • The GUI for adding a port according to an embodiment of the present invention is described below. We use the wizard UI style to guide use to create a VPort step by step. In each step, one or more information about the port is collected. After all information required to create a port are collected, at the last step, a new VPort will be created. The Page Navigation of adding port wizard gives a brief overview how the pages go back or forward upon different current situation. All pages can go bi-directionally on all Operating Systems.
  • After VPort monitor is installed and selected, after users click ‘New Port’ button, the first page to add VPort is a brief introduction page. Click ‘Next>’ to continue the installation. ‘Name the VPort’ page will show up. User has to give the port a name. If the name user entered exists as a port name, a message box below will show up to prompt user to give another name. The port name should be less than 63 characters. The port name should not consist of character ‘\’ ‘*’, ‘/’ and ‘,’.
  • After user gives a valid port name, click ‘Next>’, a ‘Select Print Option’ page will show up. We have three print options for the port: (1) Spool without printing: The print job will be spooled and saved to specified spool folder. Then do nothing else. The job will be hold in the folder without being printed. (2) Spool and print immediately: The print job will be spooled and saved to specified spool folder. Then the print job will be immediately sent to the printers of this port to print. (3) Spool and print at scheduled time: The print job will be spooled and saved to specified spool folder. Then the print job will be sent to the printers to print at specified time. The scheduled jobs can only be printed from SpoolCenter. From the view of the port monitor, this option is same as ‘Spool only without printing’.
  • The default print option is ‘Spool only without printing’. If the print option needs to be changed, just select the one of the three options. If ‘Spool and print at scheduled time’ option is selected, you have to specify a future time to print jobs. Besides specifying a future date and time, you have to specify the print frequency. You can specify to print jobs at every 1-6 days, weeks or months. When ‘Print only new jobs in the queue’ is selected, only the jobs that were scheduled for printing during the most recent printing cycle will be printed. When it is cleared, jobs scheduled during all printing cycles will be printed.
  • After choosing a print option, click Next to continue. ‘Spool File Folder’ Page will show up for user to enter or select a folder name to save the print job file. If the folder is not the default one and the folder does not exist, a message box will show up to prompt user to create the folder or not. If Yes is click, the folder is created and used as the spool folder. Otherwise, user has to enter or select another folder to spool the jobs. If the folder is used by other VPort, another message box will show up to prompt user. Another folder has to entered and selected. It does not allow to use the same spool folder for two different SpoolCenter ports. User also can click the ‘Browse . . . ’ button to select a folder name from ‘Browse for Folder’ dialog box. After enter or select a valid spool folder, click Next to continue. ‘Select the Printers’ Page will show up.
  • All printers whose port is not a VPort will be listed in the page. VPort can not forward a print job to another printer with VPort to avoid that the print jobs are send back and forth between printers endlessly. Check the check box on the left of the printer name if you want the jobs to be forwarded to that printer. Please notice that highlighting a row or multiple rows in the printer list does not mean they will be used by the port. Highlighting printers is used to change the order of the printers in the list. The printers used by the port have the order. The printers selected in the printer list should have different print port, because a general port can only be connected to only one physical printer. If multiple printers with the same port are selected, an error message box will show up.
  • The printers in the list have priorities when applying distribution. The first printer has the highest priority and last printer has the lowest priority. When the job is not PS format or not page-independent PS, while applying cluster printing policy, the job will be forwarded to the first printer since the job can not be split page by page. To change the order of printer in the printer list, just highlight the printer and use Move Up and Move Down buttons to move the highlighted printer up and down. You might press Ctrl+Click to select multiple printers to move them together. In this version, the number of printers selected is limited to 3. If there are more than 3 printers are selected, an error message will pop up. You have to uncheck some printers. After selecting the printers for the port, click Next. Then the ‘Set Print Policy’ page shows up.
  • A print policy has to be specified for this port to indicate how the job will be distributed and printed to the cluster printers. In an embodiment of the present invention, there are four print policies: Direct printing, Tandem printing, Broadcast printing and Cluster printing. Tandem printing and Cluster printing policies are page-based and require PostScript parser to analyze the PS job and cut it into small pieces and print them. In an embodiment of the present invention, there are only PostScript parser only jobs in PS format can apply these two print policies. Other format jobs can not use Tandem printing and Cluster printing to redistribute. Direct printing and Broadcast printing policy are job-based. They can be applied to the jobs in any formats. Tandem Printing policy and Cluster Printing policy are always available in VPort configuration if there are multiple printers in the VPort printer group no matter whether the virtual printers using the VPort are set to KPDL or PCL/XL. That is because the VPort could be used by multiple virtual printers. It is users’ choice to use which print policy. Also when the VPort is created or configured, the port monitor may have no idea about which printer will use the VPort.
  • FIG. 4 is a block diagram showing Tandem printing policy, in accordance with a preferred embodiment of the present invention. When user prints multiple copies 410 of the job through application, by using this policy the job will be distributed to each printer of the cluster printers with the same number of copies 441, 442, 444. The total number of copies of the job is same as the number the user requires. In the example in FIG. 4, three physical printers 431, 432, 434 are associated with the VPort 420. Printer3 433 is not associated with the VPort 420.
  • FIG. 5 is a block diagram showing Direct printing policy, in accordance with a preferred embodiment of the present invention. For special purpose, user can specify the job to be only printed on a specified physical printer 534 in the cluster printer list. Direct printing will directly forward the job to the specified printer 534 for printing.
  • FIG. 6 is a block diagram showing Broadcast printing policy, in accordance with a preferred embodiment of the present invention. User can multiply the job received 610 and send the specified copies of the jobs to the printers in the cluster. When the Broadcast printing policy is selected, the button ‘Settings’ will be enabled. Click Settings to specify the number of copies for each printer as below. The default setting is one copy for each printer. The number of copies can be changed according to the requirement. If the number for a printer is changed to 0, the job will not be printed at that printer. If ‘Apply copy count to all printers’ is checked, when the copy number for a printer is changed the copy numbers for other printers will be changed to the same number as the current printer.
  • FIG. 7 is a block diagram showing Cluster printing policy, in accordance with a preferred embodiment of the present invention. The job will be divided into small pieces according to specified policy and then distribute and print these small pieces to the printers in the list. With ‘Optimized by printer speed’ the jobs will be distributed according to the speed of printers associated with the VPort. In an embodiment of the present invention, SpoolCenter may have no idea to know the printing speed of printers from some manufacturers. If the printer group of VPort include both printers whose speeds are known and printers whose speeds are unknown, Cluster printing with optimized by printer speed policy may distribute the job to only printers whose speeds are known. With ‘Equal pages. distribution’ pages of the print jobs will be distributed equally to all printers associated with the VPort. After selecting the print policy for the port, click Next. Then the confirmation page shows up. Then click Finish to complete adding the port. If the operation is successful, the UI just disappears and no more dialog box pops up again.
  • The Configure Port UI is for configuring the existing VPort. You can change any information of the VPort except its name. The detail instructions to change the respective values can be referred in ‘Add Port’. The major UI difference is that Add Port uses wizard style to add a port one page by another with entering single information in one page and Configure Port is to configure single information in each tab in one dialog. Another major UI difference is that Configure Port has more options to configure the behavior of the monitor. But Add Port Wizard just has default values for these options and these options do not have to be configured during adding the port.
  • We have described all controls on the UI of Spooling Tab in Add Port Wizard except option ‘Apply spooling option to all jobs in the queue’. The default of this option is not checked. This option is enabled only when SpoolCenter is running. If SpoolCenter is not started, this option will be disabled. If SpoolCenter is started and the option is checked but SpoolCenter is closed before you click OK on the configuration page, this option will be automatically disabled and unchecked. This option is powerful and dangerous. It will overwrite the print options of ALL jobs captured in the VPort. You can not undo the operation after clicking OK. If you choose ‘Spool and print immediately’ option and apply it to all jobs in the queue, all jobs will be printed immediately to printers according to their print policies. The VPort monitor will save the status of option. That means when you check the option and click OK to apply the print option and next time you open the configuration, the option will be still checked. Without changing anything and you click OK, the print option will be applied to ALL jobs in the queue AGAIN. So be very careful to use this option.
  • Constraints of Printer Tab in various embodiments of the present invention are described below. If only one printer is selected in Printer Tab, only Direct Printing and Broadcast Printing policies are applicable. If multiple printers are selected all printing policies are applicable.
  • Constraint 1: If current print policy is Tandem Printing or Cluster Printing, and on Printer Tab only one printer is checked, when you click other tabs or click OK to leave Printer Tab below message box will show up. Click OK, the print policy will be changed to Direct Printing; Click Cancel, the focus will go back to the Printer Tab.
  • Constraint 2: If current print policy is Direct Printing, and on Printer Tab the printer assigned to Direct Printing has been removed from VPort printer group, when you click other tabs or click OK to leave Printer Tab message box will show up. Click OK, the first printer in the new VPort printer group will be chosen for Direct Printing; Click Cancel, the focus will go back to the Printer Tab.
  • Constraint 3: If current print policy is Broadcast Printing, and on Printer Tab all printers assigned to Broadcast Printing have been removed from VPort printer group, when you click other tabs or click OK to leave Printer Tab message box will show up. Click OK, the all printers in the new VPort printer group will be chosen for Broadcast Printing with each printer one copy; Click Cancel, the focus will go back to the Printer Tab.
  • Constraint 4: If current print policy is Broadcast Printing, and on Printer Tab some printers, not all, assigned to Broadcast Printing have been removed from VPort printer group, when you click other tabs or click OK to leave Printer Tab below message box will show up. Click OK, the printers removed from the VPort printer group will also be removed from the Broadcast Printing printer group; Click Cancel, the focus will go back to the Printer Tab.
  • Constraints of Policy Tab in various embodiments of the present invention are described below. The controls on the Policy Tab UI are same as the ones in Add Port Wizard except option ‘Apply print policy to all jobs in the queue’. The default of this option is not checked. This option is enabled only when SpoolCenter is running. If SpoolCenter is not started, this option will be disabled. If SpoolCenter is started and the option is checked but SpoolCenter is closed before you click OK on the configuration page, this option will be automatically disabled and unchecked. As well as option ‘Apply spooling option to all jobs in the queue’ this option is also powerful and dangerous. It will overwrite the print policy of ALL jobs captured in the VPort. You can not undo the operation after clicking OK. The VPort monitor will save the status of option. That means when you check the option and click OK to apply the print option and next time you open the configuration, the option will be still checked. Without changing anything and you click OK, the print option will be applied to ALL jobs in the queue AGAIN. So be very careful to use this option. Cluster Printing policy is only applicable to jobs with valid and page-independent PS file. Tandem Printing policy is only applicable to the jobs with valid PS file. Direct Printing and Broadcast Printing policies can be applicable to any kind of jobs. Constraint 1: If current print policy is set as Tandem Printing or Cluster Printing, and “Apply policy to all jobs” is checked on Policy Tab, when user clicks OK to close the VPort configure dialog box below message box will show up. Click OK, the print policy will be applied to applicable jobs. For the jobs which are not applicable, their print policy will not be changed; Click Cancel, the focus will go back to the Policy Tab.
  • Regarding Options Tab, in Add Port Wizard there are not such options for users to set. Add Port Wizard apply the default values for these options. The default value of ‘Delete all jobs in the VPort when deleting the VPort’ is not checked. The default value of ‘Display job distribution message when printing.’ is checked. If option ‘Delete all jobs in the VPort when deleting the VPort’ is checked, when the VPort is to be deleted a confirmation message will popup to ask if all jobs in the VPort will be deleted. If yes, all jobs as well as the log file will be deleted from the VPort. If not, the VPort will be deleted but the jobs still remains in the spool folder. If the option is not checked, when the VPort to deleted the confirmation message will not pop up to ask if all jobs in the VPort will be deleted. The VPort will be deleted but the jobs still remains in the spool folder. If option ‘Display job distribution message when printing’ is checked, after a job is distributed and sent to the spooler a notification message will be sent to the machine which print the job. If the option is not checked, after distributing there will not be such a notification message sent out. After change the configuration, click OK to save the information. To discard the changes click Cancel button.
  • If the SpoolCenter port is no long used, it can be deleted. When you delete a port, a confirmation dialog box will show up for you to confirm the deletion. Click Yes, the port will be deleted if it does not be used any printer. If the port is deleted successfully, all PS files under the spool folder still remain. Click No to cancel the deletion. If the port is being used by some printers, it can not be deleted. Below message box will shows up if you try to delete it from Printer Properties. If option ‘Delete all jobs in the VPort when deleting the VPort’ is checked, when the VPort is to be deleted a confirmation message will popup to ask if all jobs in the VPort will be deleted. If yes, all jobs as well as the log file will be deleted from the VPort. If not, the VPort will be deleted but the jobs still remains in the spool folder. If the option is not checked, when the VPort to be deleted the confirmation message will not pop up to ask if all jobs in the VPort will be deleted. The VPort will be deleted but the jobs still remains in the spool folder.
  • FIG. 8 is a view of the GUI of the SpoolCenter, in accordance with a preferred embodiment of the present invention. Below the title is the menu bar. The left pane is for all VPort and the jobs currently under the VPort. The right pane is for displaying the detail information of the jobs under the specified queue, such as job name, status, document source, owner, number of pages, number of copies, job size and time submitted. In VPort Menu and the GUI, different icons can be used to show different settings for the VPorts: Spool without printing, Spool and print immediately, and Spool and print at scheduled time. Similarly, different icons can be used to show different statuses of the jobs: Held (Hold), Pre-processing, Printed, Printing, and Sheduled.
  • Various operations on a VPort can be performed by selecting a VPort and using the VPort pull-down menu or by right-clicking on the selected VPort. The VPort menu has some functional submenus: new, open, configure, delete, add SpoolCenter printer, view log, accounting, and properties. The first four submenus are for user to manipulate the VPort. ‘Add SpoolCenter Printer’ is to create a SpoolCenter printer with current port basing on the existing printer. The next three submenus are to display some information of the VPort. A right-click on a VPort name in the left pane causes a popup menu to show up. They are the operations that can be applied to the VPort at that moment. They are same as the submenus under VPort menu except ‘New’ submenu. The View Log submenu is to display the latest 64 KB log information of the queue. If the log file of the queue is larger than 64 KB, this operation will just display the last 64 KB log information. See FIG. 3 for a for a portion of a sample log file.
  • FIG. 9 is a view of the GUI of the SpoolCenter VPort accounting, in accordance with a preferred embodiment of the present invention. Queue accounting gives the end user statistic job information manipulated in the queue. The accounting information has three categories: General, By Date, By Time. General category gives the general jobs information of current queue: the number of jobs and pages in three categories, printed, hold and scheduled. By Date category gives the accounting information by date. This gives who at what timeframe printed/hold/scheduled how many jobs or pages. By Time category gives the accounting information by hours in a day. This gives during 24 hours who at what time frame printed/hold/scheduled how many jobs or pages. Job accounting gives the end user statistic job information of a specified job. The accounting information has three categories: General, LifeTime. General category gives the general jobs information of current queue: the number of times the job was printed, hold and scheduled at a given time frame. Life time category gives the activity information of the job in each day during a give time frame. By Time category gives the accounting information by hours in a day. You can get during 24 hours who at what time frame printed/hold/scheduled how many jobs or pages. Properties information of the specified job, including job name, job file name, status, source, owner, number of pages, size in byte and time submitted.
  • The Job menu may have some functional submenus: print/reprint, hold, schedule, cut/copy/paste, delete, delete all, select all, accounting, and properties. Print/Reprint menu is used to send the job to SpoolCenter port to print/reprint. If there is only one printer in the VPort cluster printer list, only Direct Printing and Broadcast Printing policies will be enabled. If there are more than one printer in the VPort cluster printer list, there will be submenus for Print/Reprint according to different print policy. To print the document, user can have many choices to determine how the job will be printed.
  • FIG. 10 is a flowchart showing overall SpoolCenter and VPort processing, in accordance with a preferred embodiment of the present invention. A print job is printed using SpoolCenter and Vport to a physical printer through the following three-step process.
  • In step 1010, an administrator uses GUI to configure a virtual port (VPort). Each virtual port is associated with one or more physical printers and one or more virtual printers. Each virtual printer in turn is configured from a physical printer. The details of the GUIs involved are described earlier.
  • In step 1020, a job sent to a virtual printer typically from an application is spooled to the VPort associated with the virtual printer. In an embodiment of the present invention, there are three settings to a virtual port configurable by the user: Spool without printing, Spool and print immediately, and Spool and print at a scheduled time. The details of these three spooling options are described earlier.
  • In step 1030, an administrator uses GUI to send the spooled print job to the physical printer(s) associated with the virtual port. In an embodiment of the present invention, cluster printing policy comprises: (1) dividing a print job into pieces at page boundaries by applying dividing subpolicies of matching color, paper size, media type, finishing characteristics of the pieces with the corresponding characteristics of the physical printers (where the order of the application of the dividing subpolicies is customizable by an administrator); and (2) sending the pieces to the physical printers by applying sending subpolicies of optimization for fastest printing based on physical printers' speeds, and equal-page distribution. When both of the subpolicies are used, user-customizable weights and preferences can be used to control the degree to which one subpolicy takes precedence over the other subpolicy. In cluster printing, policy, a large 1000-page document may be divided into three pieces and sent to three printers, as in FIG. 7, so that color pages are sent to color printers and the fastest printer receives the most number of pages to achieve the optimal overall performance.
  • FIG. 11 is a block diagram showing additional SpoolCenter and VPort features, in accordance with a preferred embodiment of the present invention.
  • Block 1110 represents the features of Pool Printing and Recovery Printing. Both of them require a bidirectional communication connection to the physical printer(s) to monitor their status. SNMP (Simple Network Management Protocol) queries are sent to network printer(s) to check their status. Through the language monitor of the printer driver, PJL (Printer Job Language) commands are sent to local printer(s) to check their status. An administrator uses GUI to send a print job to physical printer(s) associated with the virtual port using Pool Printing policy (wherein a job is sent to the first available and functional printer according to the result of the bidirectional communication) and Recovery Printing policy (wherein, after a printing failure of a job, the job is transferred to an available and functional printer in the queue). Where two or more physical printers are available and functional, a printer can be selected by user-customizable order preference list, or by matching characteristics of the job with the characteristics/capabilities of the printers to find the best match as in Cluster printing policy,
  • Block 1120 represents the feature whereby a user can use GUI to select print job(s) from the print jobs spooled to a virtual port, and enabling Zoom-in and Zoom-out preview of the selected job(s) in separate window(s). Page independence refers to a PostScript file that conforms to the Adobe Document Structuring Conventions (ADSC). Each page of the document will be a self-contained object. This is essential if the PostScript pages are to be extracted and printed on a different printer or previewed out of order. In an embodiment of the present invention, only page independent jobs can be printed through cluster printing policy because the cluster printing will break up the job into small jobs on the base of pages and send these small jobs to multiple printers. That is the reason that the cluster printing requires jobs to be page independent. Page dependence means there are some resources, such as fonts, patterns, or some PS commands, shared among pages, which makes the pages not self-contained. The pages can not be printed or preview out of order.
  • Block 1130 represents other accounting features in addition to those described in connection with FIG. 9. User can use GUI to select a virtual port and display accounting information comprising general accounting information about status, the number of jobs, number of pages of the print jobs spooled to the virtual port, and by-date and by-time accounting information. See the descriptions accompanying FIG. 9.
  • Although this invention has been largely described using terminology pertaining to printer drivers, one skilled in this art could see how the disclosed methods can be used with other device drivers. The foregoing descriptions used printer drivers rather than general device drivers for concreteness of the explanations, but they also apply to other device drivers. Similarly, the foregoing descriptions of the preferred embodiments generally use examples pertaining to printer driver settings, but they are to be understood as similarly applicable to other kinds of device drivers.
  • Although this invention has been largely described using Windows terminology, one skilled in this art could see how the disclosed methods can be used with other operating systems, such as DOS, Unix, Linux, Palm OS, or Apple OS, and in a variety of devices, including personal computers, network appliance, handheld computer, personal digital assistant, handheld and multimedia devices, etc. One skilled in this art could also see how the user could be provided with more choices, or how the invention could be automated to make one or more of the steps in the methods of the invention invisible to the end user.
  • While this invention has been described in conjunction with its specific embodiments, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. There are changes that may be made without departing from the spirit and scope of the invention.
  • Any element in a claim that does not explicitly state “means for” performing a specific function, or “step for” performing a specific function, is not to be interpreted as a “means” or “step” clause as specified in 35 U.S.C. 112, Paragraph 6. In particular, the use of “step(s) of” or “method step(s) of” in the claims herein is not intended to invoke the provisions of 35 U.S.C. 112, Paragraph 6.

Claims (20)

1. A method for printing to a plurality of printers, comprising:
providing a GUI for an administrator to configure virtual ports, each of which is associated with at least one physical printer and at least one virtual printer, wherein each of the at least one virtual printer is configured from a physical printer;
spooling a print job sent to a virtual printer to the virtual port associated with the virtual printer; and
providing a GUI for the administrator to send the print job to the at least one physical printer associated with the virtual port.
2. The method of claim 1, wherein spooling of a print job sent to a virtual printer to the virtual port associated with the virtual printer uses spooling options of Spool without printing, Spool and print immediately, and Spool and print at a scheduled time.
3. The method of claim 1, wherein providing a GUI for an administrator to send the print job to the at least one physical printer associated with the virtual port uses Tandem printing policy wherein the same number of copies of the print job are sent to each of the at least one physical printer.
4. The method of claim 1, wherein providing a GUI for an administrator to send the print job to the at least one physical printer associated with the virtual port uses Direct printing policy wherein the print job is sent to user-specified one of the at least one physical printer.
5. The method of claim 1, wherein providing a GUI for an administrator to send the print job to the at least one physical printer associated with the virtual port uses Broadcast printing policy wherein the number of copies specified for each of the at least one physical printer are sent to each of the at least one physical printer.
6. The method of claim 1, wherein providing a GUI for an administrator to send the print job to the at least one physical printer associated with the virtual port uses Cluster printing policy wherein a print job is divided into pieces at page boundaries and sent to the at least one physical printer.
7. The method of claim 6, wherein Cluster printing policy comprises
dividing a print job into pieces at page boundaries by applying dividing subpolicies of matching color, paper size, media type, and finishing characteristics of the pieces with the corresponding characteristics of the at least one physical printer, wherein the order of the application of the dividing subpolicies is customizable by an administrator using GUI; and
sending the pieces into the at least one physical printer by applying sending subpolicies of optimization for fastest printing based on the speed of the at least one physical printer and distributing equal number of pages to the at least one physical printer.
8. The method of claim 1, further comprising a bidirectional communication connection to the at least one physical printer to monitor status of a network printer through SNMP and to monitor status of a local printer through PJL commands, wherein providing a GUI for an administrator to send the print job to the at least one physical printer associated with the virtual port uses Pool printing policy wherein a print job is sent to the first available and functional printer among the at least one physical printer and Recovery printing policy wherein upon a printing failure during processing of a print job, the print job is transferred to an available and functional printer among the at least one physical printer.
9. The method of claim 1, further comprising a GUI for selecting at least one print job from the print jobs spooled to the virtual port and enabling Zoom-in and Zoom-out preview of the selected at least one print job in separate at least one display window.
10. The method of claim 1, further comprising GUI for selecting a virtual port and displaying accounting information comprising general accounting information regarding status, the number of jobs, and the number of pages of the print jobs spooled to the virtual port, and by-date and by-time accounting information.
11. A computer program product for printing to a plurality of printers, comprising machine-readable code for causing a machine to perform the method steps of:
providing a GUI for an administrator to configure virtual ports, each of which is associated with at least one physical printer and at least one virtual printer, wherein each of the at least one virtual printer is configured from a physical printer;
spooling a print job sent to a virtual printer to the virtual port associated with the virtual printer using spooling options of Spool without printing, Spool and print immediately, and Spool and print at a scheduled time; and
providing a GUI for the administrator to send the print job to the at least one physical printer associated with the virtual port.
12. The computer program product of claim 11, wherein providing a GUI for an administrator to send the print job to the at least-one physical printer associated with the virtual port uses Tandem printing policy wherein the same number of copies of the print job are sent to each of the at least one physical printer; Direct printing policy wherein the print job is sent to user-specified one of the at least one physical printer; Broadcast printing policy wherein the number of copies specified for each of the at least one physical printer are sent to each of the at least one physical printer; and Cluster printing policy wherein a print job is divided into pieces at page boundaries and sent to the at least one physical printer.
13. The computer program product of claim 12, wherein Cluster printing policy comprises
dividing a print job into pieces at page boundaries by applying dividing subpolicies of matching color, paper size, media type, and finishing characteristics of the pieces with the corresponding characteristics of the at least one physical printer, wherein the order of the application of the dividing subpolicies is customizable by an administrator using GUI; and
sending the pieces into the at least one physical printer by applying sending subpolicies of optimization for fastest printing based on the speed of the at least one physical printer and distributing equal number of pages to the at least one physical printer.
14. The computer program product of claim 11, further comprising machine-readable code for causing a machine to perform the method step of providing a bidirectional communication connection to the at least one physical printer to monitor status of a network printer through SNMP and to monitor status of a local printer through PJL commands, wherein providing a GUI for an administrator to send the print job to the at least one physical printer associated with the virtual port uses Pool printing policy wherein a print job is sent to the first available and functional printer among the at least one physical printer and Recovery printing policy wherein upon a printing failure during processing of a print job, the print job is transferred to an available and functional printer among the at least one physical printer.
15. The computer program product of claim 11, further comprising machine-readable code for causing a machine to perform the method steps of:
providing a GUI for selecting at least one print job from the print jobs spooled to the virtual port and enabling Zoom-in and Zoom-out preview of the selected at least one print job in separate at least one display window; and
providing a GUI for selecting a virtual port and displaying accounting information comprising general accounting information regarding status, the number of jobs, and the number of pages of the print jobs spooled to the virtual port, and by-date and by-time accounting information.
16. A computing system comprising a print engine, programmed for printing to a plurality of printers, comprising:
providing a GUI for an administrator to configure virtual ports, each of which is associated with at least one physical printer and at least one virtual printer, wherein each of the at least one virtual printer is configured from a physical printer;
spooling a print job sent to a virtual printer to the virtual port associated with the virtual printer using spooling options of Spool without printing, Spool and print immediately, and Spool and print at a scheduled time; and
providing a GUI for the administrator to send the print job to the at least one physical printer associated with the virtual port.
17. The computing system of claim 16, wherein providing a GUI for an administrator to send the print job to the at least one physical printer associated with the virtual port uses Tandem printing policy wherein the same number of copies of the print job are sent to each of the at least one physical printer; Direct printing policy wherein the print job is sent to user-specified one of the at least one physical printer; Broadcast printing policy wherein the number of copies specified for each of the at least one physical printer are sent to each of the at least one physical printer; and Cluster printing policy wherein a print job is divided into pieces at page boundaries and sent to the at least one physical printer.
18. The computing system of claim 17, wherein Cluster printing policy comprises
dividing a print job into pieces at page boundaries by applying dividing subpolicies of matching color, paper size, media type, and finishing characteristics of the pieces with the corresponding characteristics of the at least one physical printer, wherein the order of the application of the dividing subpolicies is customizable by an administrator using GUI; and
sending the pieces into the at least one physical printer by applying sending subpolicies of optimization for fastest printing based on the speed of the at least one physical printer and distributing equal number of pages to the at least one physical printer.
19. The computing system of claim 16, further comprising providing a bidirectional communication connection to the at least one physical printer to monitor status of a network printer through SNMP and to monitor status of a local printer through PJL commands, wherein providing a GUI for an administrator to send the print job to the at least one physical printer associated with the virtual port uses Pool printing policy wherein a print job is sent to the first available and functional printer among the at least one physical printer and Recovery printing policy wherein upon a printing failure during processing of a print job, the print job is transferred to an available and functional printer among the at least one physical printer.
20. The computing system of claim 16, further comprising machine-readable code for causing a machine to perform the method steps of:
providing a GUI for selecting at least one print job from the print jobs spooled to the virtual port and enabling Zoom-in and Zoom-out preview of the selected at least one print job in separate at least one display window; and
providing a GUI for selecting a virtual port and displaying accounting information comprising general accounting information regarding status, the number of jobs, and the number of pages of the print jobs spooled to the virtual port, and by-date and by-time accounting information.
US11/123,574 2005-05-06 2005-05-06 Print job spooling and distribution system Expired - Fee Related US7593125B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/123,574 US7593125B2 (en) 2005-05-06 2005-05-06 Print job spooling and distribution system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/123,574 US7593125B2 (en) 2005-05-06 2005-05-06 Print job spooling and distribution system

Publications (2)

Publication Number Publication Date
US20060250638A1 true US20060250638A1 (en) 2006-11-09
US7593125B2 US7593125B2 (en) 2009-09-22

Family

ID=37393757

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/123,574 Expired - Fee Related US7593125B2 (en) 2005-05-06 2005-05-06 Print job spooling and distribution system

Country Status (1)

Country Link
US (1) US7593125B2 (en)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060256372A1 (en) * 2005-05-13 2006-11-16 Katsunori Suzuki Terminal device for performing print processing, method of controlling the same, and computer product
US20060279776A1 (en) * 2005-06-13 2006-12-14 Akiyama Chiaki Print control apparatus, print control system, print control method, and recording medium having print control program
US20070133028A1 (en) * 2005-12-13 2007-06-14 International Business Machines Corporation Print job transforms
US20070201077A1 (en) * 2006-02-28 2007-08-30 Xerox Corporation Distributed printing system with improved load balancing
US20070201078A1 (en) * 2006-02-28 2007-08-30 Xerox Corporation Distributed printing system with improved load balancing
US20080278745A1 (en) * 2007-05-09 2008-11-13 Xerox Corporation Multiple output devices with rules-based sub-job device selection
US20090051960A1 (en) * 2007-08-23 2009-02-26 Maglanque Jose Elwin System and method for creating a customizable device driver for interfacing with a document processing device
US20090070660A1 (en) * 2007-09-06 2009-03-12 Poirier Arthur J System and method for manipulation of document data intercepted through port redirection
US20090241024A1 (en) * 2008-03-21 2009-09-24 Canon Kabushiki Kaisha Information processing apparatus, information processing method, and printing system
US20100315665A1 (en) * 2009-06-12 2010-12-16 Oki Data Corporation Image forming system and method
US20110255129A1 (en) * 2010-04-15 2011-10-20 Canon Kabushiki Kaisha Information processing apparatus capable of communicating with printing apparatus via network, information processing system including information processing apparatus, and information processing method for information processing apparatus
US20130063774A1 (en) * 2010-03-01 2013-03-14 Ricoh Company, Ltd. Method And Device For Printing A Scheduled Print Job
US20130301062A1 (en) * 2012-05-08 2013-11-14 Konica Minolta, Inc. Printer control device, printing proxy control method, and computer-readable storage medium for computer program
US20130308165A1 (en) * 2011-02-17 2013-11-21 Kulkarni Sudhindra Venkatesh Systems and methods for managing a print job
US20140240739A1 (en) * 2013-02-27 2014-08-28 Ricoh Company, Ltd. Apparatus, system and method for providing print manager service
US8970877B2 (en) 2011-03-31 2015-03-03 Hewlett-Packard Development Company, L.P. Using a generic email address of a server and a sender email address to determine a destination printer for print data
US8976388B2 (en) 2012-05-30 2015-03-10 Hewlett-Packard Development Company, L.P. Printer identification validation procedure on a cloud computer system to recognize the target printer
US20150244890A1 (en) * 2014-02-24 2015-08-27 Ricoh Company, Ltd. Printer-pool based splitting of multi-copy print jobs
CN105471598A (en) * 2014-08-08 2016-04-06 中兴通讯股份有限公司 Dynamic allocating method and dynamic allocating system for single boards affiliated to virtual Ethernet ports
US9335963B2 (en) 2011-04-29 2016-05-10 Hewlett-Packard Development Company, L.P. Method of managing print jobs using virtual print identity
CN106406781A (en) * 2016-11-18 2017-02-15 北京红马科技有限公司 Ticket printing method for reducing paper dependence
US9832339B1 (en) * 2016-08-10 2017-11-28 Kyocera Document Solutions Inc. Image forming system, image forming method and information processing apparatus
US9992357B2 (en) 2014-01-31 2018-06-05 Hewlett-Packard Development Company L.P. Authentication of a print request
JP2019025691A (en) * 2017-07-26 2019-02-21 富士ゼロックス株式会社 Display device, printing device, printing control device, and display program

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4018622B2 (en) * 2003-12-10 2007-12-05 キヤノン株式会社 Information processing apparatus, information processing system, information processing method, information processing program, and storage medium
JP2007081893A (en) * 2005-09-15 2007-03-29 Ricoh Co Ltd Image reading apparatus and printing system
US8223365B2 (en) * 2007-06-14 2012-07-17 Dex Imaging, Inc. Apparatus and method for metering and monitoring print usage at non-network printers
US20090033977A1 (en) * 2007-07-31 2009-02-05 Xerox Corporation Method and system for aggregating print jobs
US11658862B2 (en) * 2012-11-14 2023-05-23 Accuzip, Inc. Hardware server and technical method to optimize bulk printing of physical items
JP2018107768A (en) * 2016-12-28 2018-07-05 キヤノン株式会社 Image processing apparatus, information processing method, and program

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075615A (en) * 1996-03-27 2000-06-13 Fuji Xerox Co., Ltd. Printing control apparatus
US6542252B2 (en) * 1998-08-24 2003-04-01 International Business Machines Corporation Virtual printer
US6552813B2 (en) * 1996-06-11 2003-04-22 Sun Microsystems, Inc. Directing print jobs in a network printing system
US6567184B2 (en) * 1997-12-12 2003-05-20 Seiko Epson Corporation Network system, printer, and information memory medium
US6616359B1 (en) * 1999-11-02 2003-09-09 Canon Kabushiki Kaisha Print control method and apparatus
US20030184799A1 (en) * 2001-01-11 2003-10-02 Ferlitsch Andrew Rodney Load balancing print jobs across multiple printing devices
US6658498B1 (en) * 1999-12-08 2003-12-02 International Business Machines Corporation Method, system, program, and data structures for reconfiguring output devices in a network system
US6717693B2 (en) * 1992-06-19 2004-04-06 Canon Kabushiki Kaisha Information processing apparatus and output apparatus
US6742263B2 (en) * 2002-04-04 2004-06-01 Bart T. Ellson Filament trimmer with adjustable cutoff blade
US6760118B1 (en) * 1996-03-27 2004-07-06 Canon Kabushiki Kaisha Printing device control apparatus and method
US20040136023A1 (en) * 2002-12-26 2004-07-15 Canon Kabushiki Kaisha Method of controlling printing control apparatus
US6798530B1 (en) * 1999-12-07 2004-09-28 Xerox Corporation Systems, methods and graphical user interfaces for printing object optimized images using virtual printers
US6804022B2 (en) * 1998-09-29 2004-10-12 Fuji Xerox Co., Ltd. Printer, data processing apparatus, data transmitting apparatus, print control apparatus, printing system, recording medium, and print control method
US20040257604A1 (en) * 2003-06-17 2004-12-23 Canon Kabushiki Kaisha Information processing apparatus, information processing method, program, and strong medium

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4443679B2 (en) 1998-10-09 2010-03-31 株式会社リコー Printing system
JP2001337805A (en) 2000-05-26 2001-12-07 Canon Inc Print system and control method

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6717693B2 (en) * 1992-06-19 2004-04-06 Canon Kabushiki Kaisha Information processing apparatus and output apparatus
US6760118B1 (en) * 1996-03-27 2004-07-06 Canon Kabushiki Kaisha Printing device control apparatus and method
US6075615A (en) * 1996-03-27 2000-06-13 Fuji Xerox Co., Ltd. Printing control apparatus
US6552813B2 (en) * 1996-06-11 2003-04-22 Sun Microsystems, Inc. Directing print jobs in a network printing system
US6567184B2 (en) * 1997-12-12 2003-05-20 Seiko Epson Corporation Network system, printer, and information memory medium
US6542252B2 (en) * 1998-08-24 2003-04-01 International Business Machines Corporation Virtual printer
US6804022B2 (en) * 1998-09-29 2004-10-12 Fuji Xerox Co., Ltd. Printer, data processing apparatus, data transmitting apparatus, print control apparatus, printing system, recording medium, and print control method
US6616359B1 (en) * 1999-11-02 2003-09-09 Canon Kabushiki Kaisha Print control method and apparatus
US6798530B1 (en) * 1999-12-07 2004-09-28 Xerox Corporation Systems, methods and graphical user interfaces for printing object optimized images using virtual printers
US6658498B1 (en) * 1999-12-08 2003-12-02 International Business Machines Corporation Method, system, program, and data structures for reconfiguring output devices in a network system
US20030184799A1 (en) * 2001-01-11 2003-10-02 Ferlitsch Andrew Rodney Load balancing print jobs across multiple printing devices
US6742263B2 (en) * 2002-04-04 2004-06-01 Bart T. Ellson Filament trimmer with adjustable cutoff blade
US20040136023A1 (en) * 2002-12-26 2004-07-15 Canon Kabushiki Kaisha Method of controlling printing control apparatus
US20040257604A1 (en) * 2003-06-17 2004-12-23 Canon Kabushiki Kaisha Information processing apparatus, information processing method, program, and strong medium

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7907292B2 (en) * 2005-05-13 2011-03-15 Ricoh Company, Limited Terminal device for performing print processing, method of controlling the same, and computer product
US20060256372A1 (en) * 2005-05-13 2006-11-16 Katsunori Suzuki Terminal device for performing print processing, method of controlling the same, and computer product
US7719709B2 (en) * 2005-06-13 2010-05-18 Ricoh Company, Ltd. Print control apparatus, print control system, print control method, and recording medium having print control program
US20060279776A1 (en) * 2005-06-13 2006-12-14 Akiyama Chiaki Print control apparatus, print control system, print control method, and recording medium having print control program
US20070133028A1 (en) * 2005-12-13 2007-06-14 International Business Machines Corporation Print job transforms
US7880913B2 (en) * 2005-12-13 2011-02-01 Infoprint Solutions Company, Llc Methods and systems for segmenting logical pages into work units for processing on multiple compute systems
US20070201077A1 (en) * 2006-02-28 2007-08-30 Xerox Corporation Distributed printing system with improved load balancing
US20070201078A1 (en) * 2006-02-28 2007-08-30 Xerox Corporation Distributed printing system with improved load balancing
US8149438B2 (en) * 2006-02-28 2012-04-03 Xerox Corporation Distributed printing system with improved load balancing
US20080278745A1 (en) * 2007-05-09 2008-11-13 Xerox Corporation Multiple output devices with rules-based sub-job device selection
US20090051960A1 (en) * 2007-08-23 2009-02-26 Maglanque Jose Elwin System and method for creating a customizable device driver for interfacing with a document processing device
US20090070660A1 (en) * 2007-09-06 2009-03-12 Poirier Arthur J System and method for manipulation of document data intercepted through port redirection
US20090241024A1 (en) * 2008-03-21 2009-09-24 Canon Kabushiki Kaisha Information processing apparatus, information processing method, and printing system
US20100315665A1 (en) * 2009-06-12 2010-12-16 Oki Data Corporation Image forming system and method
US8432561B2 (en) * 2009-06-12 2013-04-30 Oki Data Corporation Image forming system with image forming device prioritization function and method thereof
US20130063774A1 (en) * 2010-03-01 2013-03-14 Ricoh Company, Ltd. Method And Device For Printing A Scheduled Print Job
US9588720B2 (en) * 2010-03-01 2017-03-07 Ricoh Company, Ltd. Method and device for printing a scheduled print job
US9036186B2 (en) * 2010-03-01 2015-05-19 Ricoh Company, Ltd. Method and device for printing a scheduled print job
US20150286446A1 (en) * 2010-03-01 2015-10-08 Ricoh Company, Ltd. Method And Device For Printing A Scheduled Print Job
US20110255129A1 (en) * 2010-04-15 2011-10-20 Canon Kabushiki Kaisha Information processing apparatus capable of communicating with printing apparatus via network, information processing system including information processing apparatus, and information processing method for information processing apparatus
US8619280B2 (en) * 2010-04-15 2013-12-31 Canon Kabushiki Kaisha Information processing apparatus capable of communicating with printing apparatus via network and printing accumulated print jobs, information processing system including information processing apparatus, and information processing method for information processing apparatus
US20130308165A1 (en) * 2011-02-17 2013-11-21 Kulkarni Sudhindra Venkatesh Systems and methods for managing a print job
US9007637B2 (en) * 2011-02-17 2015-04-14 Hewlett-Packard Development Company, L.P. Generating an alias email address for managing a print job
US8970877B2 (en) 2011-03-31 2015-03-03 Hewlett-Packard Development Company, L.P. Using a generic email address of a server and a sender email address to determine a destination printer for print data
US9262110B2 (en) 2011-03-31 2016-02-16 Hewlett-Packard Development Company, L.P. Using a generic email address of a server and a sender email address to determine a destination printer for print data
US9335963B2 (en) 2011-04-29 2016-05-10 Hewlett-Packard Development Company, L.P. Method of managing print jobs using virtual print identity
US20130301062A1 (en) * 2012-05-08 2013-11-14 Konica Minolta, Inc. Printer control device, printing proxy control method, and computer-readable storage medium for computer program
US8885209B2 (en) * 2012-05-08 2014-11-11 Konica Minolta, Inc. Printer control device, method and computer-readable storage medium for controlling proxy printing using low power at low print speed
US8976388B2 (en) 2012-05-30 2015-03-10 Hewlett-Packard Development Company, L.P. Printer identification validation procedure on a cloud computer system to recognize the target printer
US9131087B2 (en) * 2013-02-27 2015-09-08 Ricoh Company, Ltd. Apparatus, system and method for providing print manager service
US20140240739A1 (en) * 2013-02-27 2014-08-28 Ricoh Company, Ltd. Apparatus, system and method for providing print manager service
US9992357B2 (en) 2014-01-31 2018-06-05 Hewlett-Packard Development Company L.P. Authentication of a print request
US20150244890A1 (en) * 2014-02-24 2015-08-27 Ricoh Company, Ltd. Printer-pool based splitting of multi-copy print jobs
US9491324B2 (en) * 2014-02-24 2016-11-08 Ricoh Company, Ltd. Printer-pool based splitting of multi-copy print jobs
CN105471598A (en) * 2014-08-08 2016-04-06 中兴通讯股份有限公司 Dynamic allocating method and dynamic allocating system for single boards affiliated to virtual Ethernet ports
US9832339B1 (en) * 2016-08-10 2017-11-28 Kyocera Document Solutions Inc. Image forming system, image forming method and information processing apparatus
CN106406781A (en) * 2016-11-18 2017-02-15 北京红马科技有限公司 Ticket printing method for reducing paper dependence
JP2019025691A (en) * 2017-07-26 2019-02-21 富士ゼロックス株式会社 Display device, printing device, printing control device, and display program

Also Published As

Publication number Publication date
US7593125B2 (en) 2009-09-22

Similar Documents

Publication Publication Date Title
US7593125B2 (en) Print job spooling and distribution system
JP4420421B2 (en) Information processing apparatus and control method thereof
US8018616B2 (en) Device information management system
US7136941B2 (en) Print management architecture for computing devices having a set of filters functions wherein the functions are prevented from conflicting with one another
JP3639772B2 (en) Information processing apparatus, printing system, printing control method, and storage medium storing computer-readable program
US7426046B2 (en) Information processing apparatus, information processing method, information processing program, and storage medium
JP3944133B2 (en) Information processing apparatus, information processing method, program, and computer-readable storage medium
US7522297B2 (en) Print instruction apparatus and print instruction method
EP1865409B1 (en) Information processing apparatus, print controlling method, and computer-readable storage medium
JP3573466B2 (en) Printing system
US9258437B2 (en) Printing system, control method, and computer-readable medium for controlling printing of data stored in a print server
US20050225789A1 (en) Print subsystem despooling backplane
US20050210408A1 (en) Alternative, customizable, simplified device settings menu
US20070091361A1 (en) Printer, print control method, and program for executing print control method
US20120212757A1 (en) Multiple print protocol capability of a virtual printer in a print shop architecture
US7689731B2 (en) Exposing the supply state of a shared peripheral device to a remote network resource
JP3840035B2 (en) Printing control apparatus and method, and printing system
US7233993B2 (en) Information processing apparatus, distributed printing controlling method, program for causing information processing apparatus to execute distributed printing controlling method, and computer-readable recording medium storing program
US20070177164A1 (en) Combined interface for specifying separate characteristics for multiple copies of an electronic document
JPH11143661A (en) Printing system
JP3984774B2 (en) Printing control apparatus and method, and printing system
US20060132835A1 (en) Application interface for device driver settings
JP3399461B2 (en) Printing system
JP4194593B2 (en) PRINT CONTROL DEVICE, ITS CONTROL METHOD, AND STORAGE MEDIUM
US20050119901A1 (en) Method, receiving server, and computer program module for the automatic reception and forwarding of document processing orders

Legal Events

Date Code Title Description
AS Assignment

Owner name: KYOCERA TECHNOLOGY DEVELOPMENT, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WANG, ZHENCAI, 04072005;LIAO, LU-CHUN;LAO, KATHERINE B.;AND OTHERS;REEL/FRAME:016537/0862

Effective date: 20050407

AS Assignment

Owner name: KYOCERA MITA CORPORATION, JAPAN

Free format text: ADD ONE ASSIGNEE REEL & FRAME 016537-0862;ASSIGNOR:KYOCERA TECHNOLOGY DEVELOPMENT, INC.;REEL/FRAME:023080/0785

Effective date: 20090804

Owner name: KYOCERA TECHNOLOGY DEVELOPMENT, INC., CALIFORNIA

Free format text: ADD ONE ASSIGNEE REEL & FRAME 016537-0862;ASSIGNOR:KYOCERA TECHNOLOGY DEVELOPMENT, INC.;REEL/FRAME:023080/0785

Effective date: 20090804

FPAY Fee payment

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.)

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20170922