Abstract:
A data processing apparatus includes an assignment database. The assignment database includes a user-information registration unit configured to collect pieces of user information about users authorized to operate a plurality of information processing apparatuses, and register each piece of user information and an identifier assigned to the corresponding user in association with each other; an output destination association table in which each piece of user information is associated with a printing apparatus that is to be an output destination; and an output-destination determining unit configured to determine the output destination of the output data by referring to the user-information registration unit and the output destination association table.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    The present application claims priority to and incorporates by reference the entire contents of Japanese Patent Application No. 2012-164576 filed in Japan on Jul. 25, 2012 and Japanese Patent Application No. 2013-122240 filed in Japan on Jun. 10, 2013. 
       BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention relates to a data processing apparatus, a data processing system, and a computer-readable storage medium. 
         [0004]    2. Description of the Related Art 
         [0005]    Some conventionally known automatic print-destination assignment systems automatically determine an output destination printer according to a predetermined rule and perform printing. To cause the system to operate as such, what is required of a user is only to select one virtual printer driver via an application and perform printing rather than selecting an output destination. Examples of such a system is disclosed in Japanese Laid-Open Patent Application No. 2010-157208, No. 2011-002881, and No. 2011-008582. 
         [0006]    To introduce an automatic print-destination assignment system to a multi-vendor environment where printers having different print functions are coresident, it is necessary to avoid an undesirable situation that print settings accepted from a user cannot be enforced onto a determined output destination printer. In this regard, conventional automatic print-destination assignment systems have adapted to a multi-vendor environment by providing a print setting user interface (UI) that accepts only print settings relating to basic function common among all vendors (function corresponding to public member of a DEVMODE structure). However, this scheme requires to forgo utilizing function specific and inherent to each vendor (function corresponding to private member of the DEVMODE structure), and therefore considerably impairs usability. 
         [0007]    Therefore, there is a need to provide a data processing apparatus, a data processing system, and a computer-readable storage medium that allow, in assignment of a print destination in a multi-vendor environment, setting not only print settings relating to basic function common among all vendors but also print settings relating to function specific and inherent to each vender. 
       SUMMARY OF THE INVENTION 
       [0008]    It is an object of the present invention to at least partially solve the problems in the conventional technology. 
         [0009]    According to an embodiment, there is provided a data processing apparatus connected over a network to a plurality of information processing apparatuses and a plurality of printing apparatuses to create output data in response to a print request from any one of the information processing apparatuses and then to transmit the output data to an automatically-determined output destination. The data processing apparatus includes an assignment database configured to determine the output destination of the output data; and a first print processing unit including a displaying unit, the first print processing unit being configured to set print settings based on an input entered via a print setting screen, and determine the output destination in accordance with determination made by the assignment database. The assignment database includes a user-information registration unit configured to collect pieces of user information about users authorized to operate the information processing apparatuses, and register each piece of user information and an identifier assigned to the corresponding user in association with each other; an output destination association table in which each piece of user information is associated with a printing apparatus that is to be an output destination; and an output-destination determining unit configured to determine the output destination of the output data by referring to the user-information registration unit and the output destination association table. The display unit is configured to notify the output-destination determining unit of the identifier contained in a request for displaying the print setting screen. The output-destination determining unit is configured to determine the output destination by referring to the user-information registration unit and the output destination association table based on a piece of user information associated with the notified identifier. The displaying unit is configured to acquire print setting data from a second print processing unit, and display the print setting screen by using the print setting data, the second print processing unit being configured to control the printing apparatus determined by the output-destination determining unit. 
         [0010]    According to another embodiment, there is provided a non-transitory computer-readable storage medium with an executable program stored thereon and executed by a computer connected over a network to a plurality of information processing apparatuses and a plurality of printing apparatuses to create output data in response to a print request from any one of the information processing apparatuses and then to transmit the output data to an automatically-determined output destination. The program instructs the computer to perform: setting, by a first print processing unit including a displaying unit, print settings based on an input entered via a print setting screen; and determining, by the first print processing unit, the output destination of the output data in accordance with determination made by an assignment database. The assignment database includes a user-information registration unit configured to collect pieces of user information about users authorized to operate the information processing apparatuses, and register each piece of user information and an identifier assigned to the corresponding user in association with each other; an output destination association table in which each piece of user information is associated with a printing apparatus that is to be an output destination; and an output-destination determining unit configured to determine the output destination of the output data by referring to the user-information registration unit and the output destination association table. The display unit is configured to notify the output-destination determining unit of the identifier contained in a request for displaying the print setting screen. The output-destination determining unit is configured to determine the output destination by referring to the user-information registration unit and the output destination association table based on a piece of user information associated with the notified identifier. The displaying unit is configured to acquire print setting data from a second print processing unit, and display the print setting screen by using the print setting data, the second print processing unit being configured to control the printing apparatus determined by the output-destination determining unit. 
         [0011]    According to still another embodiment, there is provided a data processing system that includes one or more information processing apparatuses; one or more printing apparatuses; and a data processing apparatus. The information processing apparatuses, the printing apparatuses, and the data processing apparatus are connected over a network. Each of the data processing apparatuses includes a virtual UI unit configured to create an image containing items for setting advanced print settings, the advanced print settings being print settings that depend on any one of the printing apparatuses that is an output destination; a print-setting storing unit configured to store the advanced print settings received by the virtual UI unit via the image; a creating unit configured to receive image data, and create a print job; a remote deriver configured to convert the image data contained in the print job into data that is receivable by the printing apparatus, and output the converted data as output data; and an advanced-print-setting changing unit configured to change the output data according to the advanced print settings in a case where the advanced print settings to be applied to the output data are stored in the print-setting storing unit when the output data is output from the remote driver. 
         [0012]    The above and other objects, features, advantages and technical and industrial significance of this invention will be better understood by reading the following detailed description of presently preferred embodiments of the invention, when considered in connection with the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]      FIG. 1  is a diagram illustrating a network print system of a first embodiment; 
           [0014]      FIG. 2  is a functional block diagram of a data processing apparatus of the first embodiment; 
           [0015]      FIG. 3  is a diagram illustrating a user information table according to the first embodiment; 
           [0016]      FIG. 4  is a diagram illustrating an output destination association table according to the first embodiment; 
           [0017]      FIG. 5  is a functional block diagram of the data processing apparatus of a second embodiment; 
           [0018]      FIG. 6  is a diagram illustrating a print dialog of the second embodiment; 
           [0019]      FIG. 7  is a diagram illustrating an output destination association table according to the second embodiment; 
           [0020]      FIG. 8  is a flowchart for illustrating an operation of an advanced-print-setting changing unit of the second embodiment; and 
           [0021]      FIG. 9  is a diagram illustrating a hardware configuration of the data processing apparatus of the first and second embodiments. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0022]    Embodiments of the present invention are described below; however, the present invention is not limited to the embodiments described below. In the drawings to be referred to in the following description, identical elements are denoted by like reference numerals, and repeated descriptions are omitted as appropriate. 
       First Embodiment 
       [0023]      FIG. 1  illustrates a network print system  1000  including a data processing apparatus  100  according to a first embodiment of the present invention. The network print system  1000  includes the data processing apparatus  100  implemented as a server apparatus, a plurality of clients  200  referred to as personal computers, and a plurality of remote printers  300  that are connected to one another via a network  400  referred to as a local area network (LAN), a virtual private network (VPN), the Internet, or the like. 
         [0024]    The network print system  1000  may employ any one of a client-server environment and a thin client environment in the first embodiment. When the client-server environment is employed, each of the clients  200 , on which an application program is installed, issues a print request relating to a processing result of the application to the data processing apparatus  100 . 
         [0025]    On the other hand, when the thin client environment is employed, application is not installed onto the clients  200  but installed onto the data processing apparatus  100 . In this case, the client  200  issues a service request to the data processing apparatus  100  in accordance with an appropriate remote connection protocol such as a remote desktop protocol (RDP), and issues a print request relating to a result of execution of the application installed onto the data processing apparatus  100 . 
         [0026]    The data processing apparatus  100  of the first embodiment creates output data in a raw form (hereinafter, referred to as “raw data” or “output data”) from print data relating to the print request received from the client  200 . The data processing apparatus  100  also automatically determines the remote printer  300  that is to be an output destination by a procedure, which will be described later, and transmits the created raw data to the determined output destination. 
         [0027]    The network print system  1000  of the first embodiment has been outlined above. A specific configuration of the data processing apparatus  100  of the first embodiment is described below with reference to  FIG. 2 . 
         [0028]      FIG. 2  is a functional block diagram of the data processing apparatus  100  of the first embodiment. Note that  FIG. 2  illustrates a functional configuration of the data processing apparatus  100  in a thin client environment. The data processing apparatus  100  in this situation includes an application execution unit  112 , onto which at least one application  114  is installed, and a data processing unit  110  as illustrated in  FIG. 2 . 
         [0029]    The data processing unit  110  includes a virtual printer driver  120 , a job storing unit  124  for storing therein a print job as a spool file, an image processing unit  136 , and an assignment database  160 . 
         [0030]    The virtual printer driver  120 , which may be referred to as a first print processing unit, includes a virtual print managing unit  121 , a print-setting-information extraction unit  122 , a virtual renderer  123 , a virtual UI unit  126 , and a print-setting storing unit  128 . The assignment database  160  includes an output-destination determining unit  162 , a user-information registration unit  164 , and an output destination association table  166 . 
         [0031]    A basic configuration of the data processing apparatus  100  of the first embodiment has been outlined above. Processes to be executed by the functional units of the data processing unit  110  when a user instructs to print a file output as a result of execution of the application  114  are described below step by step. 
         [0032]    First, the user logs in to the data processing apparatus  100  by operating the client  200 . As a result, a session is established between the client  200  and the data processing apparatus  100 . At this time, an operating system (OS) installed onto the data processing apparatus  100  temporarily assigns an identifier that is unique in the data processing apparatus  100  to the user involved in the established session. Such an identifier is a known identifier referred to as a user identifier (UID), a session ID, or the like. The OS holds the identifier temporarily assigned to the login user and login user&#39;s properties (hereinafter, “user information”) associated with each other while the session is maintained. Hereinafter, this identifier is referred to as “UID”. 
         [0033]    In the first embodiment, the user information held by the OS is the login user&#39;s properties acquirable by the OS at logging in of the user. Examples of the user information include a user name (account name) of the login user, a name of a group to which the login user belongs, a name of a domain or an organization in which the login user participates in Active Directory or the like, and a computer name, an IP address, a MAC address, and the like of the client  200  operated by the login user. 
         [0034]    The user-information registration unit  164  of the assignment database  160  is continuously monitoring user information  116  of the login user held by the OS. The user-information registration unit  164  collects predetermined at least one item from the user information  116  and registers the item in a user information table. 
         [0035]    The user information collected by the user-information registration unit  164  is used later in determination of an output destination. An administrator can set the item (user information) for use in determination of the output destination as desired. The user-information registration unit  164  collects and registers the item set by the administrator. 
         [0036]      FIG. 3  illustrates an example of the user information table  165  in a case where “user name” is to be registered as the user information. In this example, user names (user information) of all the users currently logged in to the data processing apparatus  100  are registered in the user information table  165 , in which the user names are associated with UIDs. Simultaneously when one user logs off the data processing apparatus  100 , the user-information registration unit  164  deletes a user name of the user from the user information table  165 . 
         [0037]      FIG. 3  illustrates the example of the user information table  165 . The user names (user information) of all the users currently logged in to the data processing apparatus  100  are stored in the user information table  165 , in which the user names are respectively associated with the UIDs. 
         [0038]    The user logged in to the data processing apparatus  100  issues a service request to the application  114  by operating the client  200 . The application  114  executes a predetermined process in response to the service request from the client  200  and outputs a result of the execution as a file. 
         [0039]    Subsequently, the user calls a print setting UI, which may be referred to as a print setting screen (hereinafter, referred to as “print dialog”), from the application  114  by operating the client  200  to give an instruction to print the file of the result of execution of the application  114 . The application  114  issues a print-dialog display request to the virtual UI unit  126 , which may be referred to as a display unit, in response to the call from the user. In response to the display request, the virtual UI unit  126  called by the virtual print managing unit  121  provides the print dialog by the following procedure. 
         [0040]    The virtual UI unit  126  first makes inquiry for a dispatch destination by notifying the assignment database  160  of the UID of the request source contained in the print-dialog display request. 
         [0041]    The assignment database  160  searches through the user information table  165  using the UID notified from the virtual UI unit  126  as a search key. If the UID notified from the virtual UI unit  126  is “00213”, the output-destination determining unit  162  acquires user name “Saitoh” that is associated with the UID “00213”. 
         [0042]    The output-destination determining unit  162  then searches through the output destination association table  166  using the user information “Saitoh” acquired from the user information table  165  as a search key. 
         [0043]      FIG. 4  illustrates an example of the output destination association table  166 . The output destination association table  166  is created in advance by an administrator in accordance with a predetermined assignment policy. Registered in the example illustrated in  FIG. 4  is printer information of the remote printers  300 , each of which is to be an output destination, associated with user names (user information). The printer information illustrated in  FIG. 4  contains “printer name”, “printer driver name”, and “output port name” of each of the remote printers  300  that is to be an output destination. 
         [0044]    As a result of the search through the output destination association table  166  using the user name “Saitoh” as the search key, the output-destination determining unit  162  determines the remote printer  300  associated with the user name “Saitoh” as an output destination, and returns printer information of the remote printer  300  and the UID “00213” to the virtual UI unit  126 . 
         [0045]    The virtual UI unit  126  holds the printer information that is returned from the assignment database  160  and associated with the UID “00213” in a temporary storage. The virtual UI unit  126  acquires a printer driver name “Printer_Driver_a” contained in the printer information, dynamically acquires a DEVMODE structure, which is a data structure for print settings, from a remote driver  150   a  associated with the printer driver name, and sets the DEVMODE structure to the print-setting storing unit  128 . 
         [0046]    Subsequently, the virtual UI unit  126  provides a print dialog by utilizing the DEVMODE structure acquired from the remote driver  150   a . This DEVMODE structure contains function specific to the remote driver  150   a  (function corresponding to private member). Therefore, a print dialog configured to allow setting the function (e.g., embedded pattern printing) specific to the remote driver  150   a  is displayed on a screen of the application  114  utilized by the user “Saitoh”. 
         [0047]    When, in response thereto, a desired print function is selected via the print dialog where the user “Saitoh” is displayed and a print execution button is clicked, a print instruction event is generated. In response to the print instruction event, the application  714  creates image data relating to the execution result file by calling an application programming interface (API), such as a graphical device interface (DGI). 
         [0048]    In response to the print instruction event, the virtual UI unit  126  sets print settings by utilizing the DEVMODE structure (acquired from the remote driver  150   a ) set to the print-setting storing unit  128  and sets settings in which the remote driver  150   a  is the output destination. More specifically, the virtual UI unit  126  stores the printer information of the output destination (the remote driver  150   a ), which has been held in the temporary storage, in the print-setting storing unit  128 , in which the printer information is associated with the print settings. Hereinafter, the print settings and the printer information of the output destination stored in the print-setting storing unit  128  is collectively referred to as print setting information. 
         [0049]    The virtual print managing unit  121  creates a print job by reading out the print setting information associated with the image data created by the application  114  from the print-setting storing unit  128  and stores the print job in the job storing unit  124 . 
         [0050]    Upon completion of storing the print job, the virtual print managing unit  121  calls the virtual renderer  123  and the print-setting-information extraction unit  122 . The virtual renderer  123  reserves a workspace  130  (workspaces  130   a  to  130   c ) as a spool space that is independent on a per-print-job basis, extracts the image data  134  from the print job stored in the job storing unit  124 , and moves the image data  134  to the corresponding workspace  130 . The print-setting-information extraction unit  122  extracts the print setting information from the print job and moves the print setting information to the corresponding workspace  130 . 
         [0051]    In addition, the virtual print managing unit  121  creates a dispatch processing unit  140  (dispatch processing units  140   a  to  140   c ) including a print instruction unit  142  as a private instance on a per-print-job basis. 
         [0052]    The print instruction unit  142  causes the image processing unit  136  implemented as an image processing module to acquire the image data  134  in the corresponding workspace  130  and perform image processing according to the print settings contained in the print setting information  132  in the workspace  130 . The “image processing” as used herein includes not only image processing related to page allocation, imposition, and the like but also image processing related to the specific function (e.g., embedded pattern printing). 
         [0053]    When the image processing performed on the image data  134  is completed, the print instruction unit  142  issues a print instruction to print the (image-processed) image data  134  in the workspace  130  to the remote driver  150   a  “Printer_Driver_a” that controls the remote printer  300  “Printer_A”, which is the output destination, in accordance with the printer information of the output destination contained in the print setting information  132 . 
         [0054]    Upon receiving the print instruction from the print instruction unit  142 , the remote driver  150   a  “Printer_Driver_a” converts the (image-processed) image data  134  in the workspace  130  to raw data (output data) and transmits the raw data (output data) to a remote printer  300  “Printer_A”. Thereafter, upon receipt of a notification of completion of printing from the output destination, the instance of the dispatch processing unit  140 , which is created on the per-job basis, ends. 
         [0055]    As described above, in the network print system  1000  of the first embodiment, at a point in time when a user issues a request for displaying a print setting UI (i.e., before a print job is created), an output-destination printer is automatically determined based on user&#39;s properties acquirable by the OS at logging in of the user. Determining the output-destination printer at the point in time when the request for displaying the print setting UI is issued makes it possible to dynamically acquire a necessary DEVMODE structure from a remote driver of the output-destination printer and cause the DEVMODE structure to be reflected in the print setting UI. Therefore, the user can set, for the automatically determined output-destination printer, not only print settings relating to basic function common among all vendors but also print settings relating to function specific and inherent to the output-destination printer. 
       Second Embodiment 
       [0056]    The network print system  1000  of a second embodiment is described below. The network print system  1000  of the second embodiment does not automatically determine an output-destination printer based on user&#39;s properties but determines an output-destination printer based on contents of print data relating to a print request. (The contents can be a character string contained in the print data or the like.) The network print system  1000  of the second embodiment has a similar structure to that of the first embodiment (see  FIG. 1 ), and repeated description is omitted. 
         [0057]    The network print system  1000  may employ any one of a client-server environment and a thin client environment in the second embodiment. Description about a case where the client-server environment is employed is the same as that of the first embodiment, and repeated description is omitted. Similarly, description about a case where the thin client environment is employed is the same as that of the first embodiment, and repeated description is omitted. 
         [0058]    The data processing apparatus  100  of the second embodiment creates output data (raw data) in a raw form from print data relating to a print request received from the client  200 . The data processing apparatus  100  also determines the remote printer  300  that is to be an output destination according to contents of the print data by a procedure, which will be described later. The data processing apparatus  100  outputs the output data to the remote printer  300  that is to be the output destination. Moreover, function (stapling, punching, or the like) specific to the remote driver  150 , which may be referred to as a second print processing unit, and set by a user is applied by an advanced-print-setting changing unit  172  of the data processing apparatus  100  by changing the output data. 
         [0059]    The network print system  1000  of the second embodiment has been outlined above. A specific configuration of the data processing apparatus  100  of the second embodiment is described below with reference to  FIG. 5 . 
         [0060]      FIG. 5  is a functional block diagram of the data processing apparatus  100  of the second embodiment. Note that  FIG. 5  illustrates a functional configuration of the data processing apparatus  100  in a thin client environment. The data processing apparatus  100  in this situation includes the application execution unit  112 , onto which the at least one application  114  is installed, and the data processing unit  110  as illustrated in  FIG. 5 . 
         [0061]    The data processing unit  110  includes the virtual printer driver  120 , the job storing unit  124  for storing therein a print job as a spool file, an output-data storing unit  171 , and the advanced-print-setting changing unit  172 . 
         [0062]    The virtual printer driver  120  includes the virtual print managing unit  121 , which may be referred to as a creating unit, the print-setting-information extraction unit  122 , the virtual renderer  123 , the virtual UI unit  126 , and the print-setting storing unit  128 . 
         [0063]    A basic configuration of the data processing apparatus  100  of the second embodiment has been outlined above. Processes to be executed by the functional units of the data processing unit  110  when a user instructs to print a file output as a result of execution of the application  114  are described below step by step. 
         [0064]    First, the user logs in to the data processing apparatus  100  by operating the client  200 . As a result, a session is established between the client  200  and the data processing apparatus  100 . At this time, the operating system (OS) installed onto the data processing apparatus  100  temporarily assigns an identifier that is unique in the data processing apparatus  100  to the user involved in the established session. Such an identifier is a known identifier referred to as a user identifier (UID), a session ID, or the like. The OS holds the temporarily assigned identifier and login user&#39;s properties (hereinafter, “user information”) associated with the each other while the session is maintained. 
         [0065]    In the second embodiment, the user information held by the OS is the login user&#39;s properties acquirable by the OS at logging in of the user. Examples of the user&#39;s properties include a user name (account name) of the login user, and a name of a group to which the login user belongs, a name of a domain or an organization in which the login user participates in Active Directory or the like, and a computer name, an IP address, a MAC address, and the like of the client  200  operated by the login user. 
         [0066]    The user logged in to the data processing apparatus  100  then issues a service request to the application  114  by operating the client  200 . The application  114  executes a predetermined process in response to the service request from the client  200  and outputs a result of the execution as a file. 
         [0067]    Subsequently, the user calls a print setting UI (hereinafter, referred to as “print dialog”) from the application  114  by operating the client  200  to give an instruction to print the file, which is the result of execution of the application  114 . The application  114  issues a print-dialog display request to the virtual UI unit  126  in response to the call from the user. Upon receiving the display request, the virtual print managing unit  121  of the virtual printer driver  120  calls the virtual UI unit  126 . The virtual UI unit  126  creates a print dialog (an image for print settings) and provides the created print dialog to the application  114 . 
         [0068]    The print dialog includes print settings relating to the basic function common among remote drivers  150   a  to  150   c  and print settings relating to functions specific to the respective remote drivers  150   a  to  150   c . Examples of the specific function include a stapling function and a punching function. 
         [0069]      FIG. 6  is a diagram illustrating a print dialog of the second embodiment. In the example illustrated in  FIG. 6 , items (stapling and punching) displayed on an advanced print setting tab are the print settings relating to the functions specific to the respective remote drivers  150   a  to  150   c.    
         [0070]    In the network print system  1000  of the second embodiment, the remote driver  150  to be used, or, more specifically, which one of the remote drivers  150   a  to  150   c  is to be used, is not determined yet at a stage where a user sets print settings. Accordingly, the virtual UI unit  126  cannot identify function specific to the remote driver  150  that is usable when displaying the print dialog; instead, the virtual UI unit  126  displays print setting items of the specific functions, such as stapling and punching, on the print dialog. 
         [0071]    The application  114  then receives desired print function settings and push-down of the print execution button via the print dialog provided by the virtual UI unit  126 . When the print execution button is pushed down by a user, a print instruction event including the print settings set by the user is generated. A print designation event has an identifier (ID) for unique identification of the print designation event. In response to the print instruction event, the application  114  creates the image data  134  relating to the execution result file by calling an API, such as a graphical device interface (DGI). The image data  134  is uniquely identifiable by the identifier of the print designation event. The application  114  transmits the image data  134  to the virtual print managing unit  121 . 
         [0072]    In response to the print instruction event, the virtual UI unit  126  sets the DEVMODE structure (function corresponding to a public member) of the print-setting storing unit  128  according to the print settings (hereinafter, “basic print settings”) relating to the basic function common among the remote drivers  150   a  to  150   c . The virtual UI unit  126  also stores the print settings (hereinafter, “advanced print settings”) relating to the functions specific to the respective remote drivers  150   a  to  150   c  in the print-setting storing unit  128 . The virtual UI unit  126  stores the basic print settings and the advanced print settings associated with the identifier of the print designation event in the print-setting storing unit  128 . 
         [0073]    Upon receiving the image data  134  from the application  114 , the virtual print managing unit  121  reads out the basic print settings of the image data  134  from the print-setting storing unit  128 . More specifically, the virtual print managing unit  121  reads out the basic print settings of the image data  134  from the print-setting storing unit  128  by utilizing the identifier of the print designation event associated with the image data  134 . 
         [0074]    The virtual print managing unit  121  then creates a print job containing the image data  134  and the basic print settings. The print job has an identifier (ID) for unique identification of the print job. The second embodiment is described on an assumption that the identifier of the print job is the same as the identifier of the print designation event. The virtual print managing unit  121  stores the print job in the job storing unit  124 . 
         [0075]    The virtual print managing unit  121  then calls the virtual renderer  123  and the print-setting-information extraction unit  122 . The virtual renderer  123  extracts the image data  134  from the print job. The virtual renderer  123  transmits the extracted image data  134  to the output-destination determining unit  162  of the assignment database  160 . Upon receiving the image data  134 , the output-destination determining unit  162  determines an output destination printer (the remote driver  150 ) based on a character string contained in the image data  134  and an output destination association table  167 . 
         [0076]      FIG. 7  is a diagram illustrating the output destination association table  167  of the second embodiment. The output destination association table  167  is created in advance by an administrator in accordance with a predetermined assignment policy. Registered in the example of the output destination association table  167  illustrated in  FIG. 7  is printer information of the remote printers  300 , each of which is to be an output destination, associated with character strings (textual information). The printer information illustrated in  FIG. 7  contains “printer name”, “printer driver name”, and “output port name” of each of the remote printers  300 . 
         [0077]    Description is made by way of an example case where the output-destination determining unit  162  finds that the image data  134  contains “aaa” as a result of search through the image data  134 . In this case, the output-destination determining unit  162  determines the remote printer  300 , of which printer information is identified by the printer name “Printer_a”, the printer driver name “Printer_Driver_a”, and an output port name “XXXXXX”, as the output-destination remote printer  300 . 
         [0078]    The output-destination determining unit  162  transmits the printer information of the remote printer  300  determined as the output destination to the virtual renderer  123 . 
         [0079]    The virtual renderer  123  receives the printer information from the output-destination determining unit  162 . The virtual renderer  123  then reserves the workspace  130  as a spool space that is independent on a per-print-job basis. The print-setting-information extraction unit  122  extracts the print setting information  132  from the print job and moves the print setting information  132  to the corresponding workspace  130 . The virtual renderer  123  moves the image data  134  extracted from the print job in the job storing unit  124  to the workspace  130  corresponding to the print job. The virtual renderer  123  also adds the printer information received from the output-destination determining unit  162  to the print setting information  132  in the workspace  130 . 
         [0080]    Moreover, the virtual print managing unit  121  creates the dispatch processing unit  140  including the print instruction unit  142  as a private instance on a per-print job basis. 
         [0081]    The print instruction unit  142  causes the image processing unit  136  implemented as an image processing module to acquire the image data  134  in the workspace  130 . The image processing unit  136  performs image processing according to the print settings contained in the print setting information  132  in the workspace  130 . The “image processing” as used herein includes image processing related to page allocation, imposition, and the like. 
         [0082]    When the image processing on the image data  134  performed by the image processing unit  136  is completed, the print instruction unit  142  refers to the printer information of the output destination contained in the print setting information  132 . Description below is made specifically by way of an example case where the printer name in the printer information is “Printer_A”. In this case, the print instruction unit  142  issues a print instruction to print the (image-processed) image data  134  in the workspace  130  to the remote driver  150   a  “Printer_Driver_a” that controls the remote printer  300  “Printer_A”, which is the output destination. 
         [0083]    Upon receiving the print instruction from the print instruction unit  142 , the remote driver  150   a  “Printer_Driver_a” converts the (image-processed) image data  134  in the workspace  130  to data receivable by the remote printer  300   a . The remote driver  150   a  “Printer_Driver_a” transmits the converted data as output data (raw data) to a printer port  170 . 
         [0084]    The printer port  170  receives the output data output from the remote driver  150 . The printer port  170  stores the output data in the output-data storing unit  171 . 
         [0085]    Upon detecting that the output data is stored in the output-data storing unit  171 , the advanced-print-setting changing unit  172  reads out the output data from the output-data storing unit  171 . The advanced-print-setting changing unit  172  changes settings of the output data according to the advanced print settings in the print-setting storing unit  128 . The advanced-print-setting changing unit  172  outputs the changed output data to the remote printer  300 . Operation of the advanced-print-setting changing unit  172  will be described in detail later. 
         [0086]    Upon receipt of a notification of completion of printing from the output-destination remote printer  300 , the instance of the dispatch processing unit  140 , which is created on the per-job basis, ends. 
         [0087]      FIG. 8  is a flowchart for illustrating the operation of the advanced-print-setting changing unit  172  of the second embodiment. The advanced-print-setting changing unit  172  determines whether or not output data is output from the printer port  170  to the output-data storing unit  171  (Step S 1 ). When output data is output (Yes in Step S 1 ), the advanced-print-setting changing unit  172  reads out the output data from the output-data storing unit  171  (Step S 2 ). When output data is not output (No in Step S 1 ), the advanced-print-setting changing unit  172  waits for output of output data from the printer port  170  to the output-data storing unit  171 . 
         [0088]    The advanced-print-setting changing unit  172  then determines whether or not advanced print settings are stored in the print-setting storing unit  128  (Step S 3 ). More specifically, the advanced-print-setting changing unit  172  determines whether or not advanced print settings to be applied to the output data are stored in the print-setting storing unit  128  by using an identifier (which is the same as the identifier of the print designation event in the second embodiment) of the print job contained in the output data as a search key. 
         [0089]    When the advanced print settings are stored (Yes in Step S 3 ), the advanced-print-setting changing unit  172  reads out the advanced print settings from the print-setting storing unit  128  (Step S 4 ). The advanced-print-setting changing unit  172  then changes the output data according to the read-out advanced print settings (Step S 5 ). More specifically, the advanced-print-setting changing unit  172  changes the output data by directly editing description; related to the advanced print settings contained in the output data (raw data). The advanced-print-setting changing unit  172  then outputs the output data changed in Step S 5  to the remote printer  300  (Step S 6 ). 
         [0090]    When the advanced print settings are not stored (No in Step S 3 ), the advanced-print-setting changing unit  172  outputs the output data, which is unchanged, to the remote printer  300  (Step S 6 ). 
         [0091]    As described above, in the network print system  1000  of the second embodiment, the virtual UI unit  126  creates an image (print dialog) that contains items for setting the advanced print settings, which are print settings that depend on a model of the output-destination remote printer  300 . Moreover, the print-setting storing unit  128  stores the advanced print settings received by the virtual UI unit  126  via the print dialog. When output data is output from the remote driver  150  of the output-destination remote printer  300  in a situation where advanced print settings to be applied to the output data are stored in the print-setting storing unit  128 , the advanced-print-setting changing unit  172  changes the output data according to the advanced print settings. 
         [0092]    Accordingly, the network print system  1000  of the second embodiment allows, in assignment of a print destination in a multi-vendor environment, setting not only print settings relating to the basic function common among all vendors but also print settings relating to the function specific and inherent to each vender. Moreover, the network print system  1000  of the second embodiment allows, even when a destination printer is not automatically determined at logging in of a user, setting print settings relating to the function specific and inherent to each vender. 
         [0093]    Finally, a hardware configuration of the data processing apparatus  100  of the first and second embodiments is described below.  FIG. 9  is a diagram illustrating the hardware configuration of the data processing apparatus  100  of the first and second embodiments. The data processing apparatus  100  of the first and second embodiments includes a control device  501 , a main storage device  502 , an auxiliary storage device  503 , a display device  504 , an input device  505 , and a communication device  506 . The control device  501 , the main storage device  502 , the auxiliary storage device  503 , the display device  504 , the input device  505 , and the communication device  506  are connected to one another via a bus  507 . 
         [0094]    The control device  501  executes program instructions read out from the auxiliary storage device  503  onto the main storage device  502 . The main storage device  502  is a memory, such as a read only memory (ROM) or a random access memory (RAM). The auxiliary storage device  503  is a hard disk drive, for example. The display device  504  is a screen, on which a state of the data processing apparatus  100  and the like are displayed. The input device  505  is an interface for inputting information to the data processing apparatus  100 . The communication device  506  is an interface for connection to a network. 
         [0095]    Program instructions to be executed by the data processing apparatus  100  of the first and second embodiments have a module configuration that includes functional blocks of the data processing apparatus  100  described above. From the viewpoint of actual hardware, the control device  501  reads out the program instructions from the storage medium and executes the program instructions, thereby loading modules into the main storage device  502 . Accordingly, the modules are generated on the main storage device  502 . Alternatively, some or all of the functional blocks of the data processing apparatus  100  may be implemented in hardware such as an integrated circuit (IC) rather than in the program instructions. 
         [0096]    The above functions of the first and second embodiments can be implemented by apparatus-executable program instructions written in an object-oriented programming language such as C, C++, C#, or Java (registered trademark). The program instructions of the first and second embodiments can be distributed as being stored in a machine-readable storage medium such as a compact-disk read-only memory (CD-ROM), a magneto-optical disk (MO), a digital versatile disc (DVD), a flexible disk, an electrically erasable programmable read-only memory (EEPROM), or an erasable programmable read-only memory (EPROM), and transmitted over a network in a form usable by other apparatus. 
         [0097]    Embodiments of the present invention have been described above; however, the present invention is not limited to the embodiments described above. For instance, the application execution unit  112  illustrated in  FIG. 2  may be installed on a terminal server other than the clients  200  and the data processing apparatus  100 . In this case, a network boundary is defined by the dotted line indicated in  FIG. 2 , and the data processing apparatus  100  is implemented as a printer server. Further alternatively, the functional units described above included in the data processing unit  110  illustrated in  FIG. 2  may be distributed across the network in appropriate units. In this case, the present invention may preferably be embodied as a network-based data processing system. The appended claims are to be construed as encompassing all modifications and alternative constructions that may occur to one skilled in the art without departing from the scope of the present invention. 
         [0098]    As described above, according to an aspect of an embodiment, there are provided a data processing apparatus, a data processing system, and a computer-readable storage medium that allow, in assignment of a print destination in a multi-vendor environment, setting not only print settings relating to basic function common among all vendors but also print settings relating to function specific and inherent to each vender. 
         [0099]    Although the invention has been described with respect to specific embodiments for a complete and clear disclosure, the appended claims are not to be thus limited but are to be construed as embodying all modifications and alternative constructions that may occur to one skilled in the art that fairly fall within the basic teaching herein set forth.