3-2-6 クライアントコンピューターのプリンター情報を取得する

クライアントコンピューターのプリンター情報を取得するには、次のいずれかのCLASSIDを使用します。

  • BBD798FE-F5D8-4E98-AC63-83330715B7B9(EMFPLUS利用不可)
  • 681CAF2E-78C7-40c9-B36E-E75FF0DE13D5

<OBJECT>タグ内で使用できるパラメーター

パラメーター
説明
Url 取得したプリンター情報を渡すサーブレットなどのURLです。
GetDriverName プリンタードライバー名を取得(True、False)します。
GetPrinterResol
プリンター解像度を取得(True、False)します。
GetTrayInfo プリンタートレイ情報を取得(True、False)します。
Config SVF for Web/Clientのインストール時にクライアントに作成される設定ファイル(XSvfWeb.ini)の内容を指定または変更するためのXMLファイルのURLです。Configパラメーターを使用した設定ファイルの変更については、「4-2 XSvfWeb.iniファイルの指定、変更」を参照してください。

注意事項

  • GetDriverName、GetPrinterResol、GetTrayInfoのパラメーターをFalseに設定した場合は、プリンター名のみを取得します。出力の際に必要となるのはプリンター名のみです。ドライバー名と解像度を取得したい場合は、パラメーターをTrueにします。

    すべてTrueにした場合の表示例

    プリンター名,プリンタードライバー名,解像度, トレイの数, ****, ****, ****
  • GetDriverName、GetPrinterResolのパラメーターをFalseに設定し、GetTrayInfoのパラメーターをTrueに設定した場合は、「プリンター名, トレイの数, ****, ****, ****」のようにカンマ区切りでトレイ情報を取得できます。

    取得例

    RICOH IPSIO NX920,5,自動トレイ選択,7,トレイ1,260,トレイ2,261

    このようにトレイ情報が取得された場合、次のように指定されます。
    (このトレイ指定を有効にするには、<OBJECT>タグのパラメーターのEmfTrayModeを「1」に設定する必要があります。)

    • VrSetTray関数(1)の場合は自動トレイ選択
    • VrSetTray関数(2)の場合はトレイ1
    • VrSetTray関数(3)の場合はトレイ2

取得できるPOSTデータ名と書式

データ名 書式
Pn プリンタードライバー名(パラメーターがTrueの場合)
プリンター解像度(パラメーターがTrueの場合)
プリンタートレイ情報(パラメーターがTrueの場合)
nは、0番目から始まり、クライアントコンピューターに登録されているプリンターの台数分を自動的に格納します。
プリンター解像度は、次のとおりです。
  • 縦横が同じ解像度の場合は「XXX」
  • 縦横が違う解像度の場合は「XXX:YYY」

記述例

次の場合の記述例とPrinterListサーブレットソースを示します。

  • サーバーがクライアントコンピューターのプリンター一覧情報を取得
  • 取得したプリンター名の上から5つをJavaサーブレット「http://10.10.10.10/servlet/WebClient_servlet」に表示

クライアント側(呼び出し元HTML)

<HTML>
<HEAD><TITLE>WEB CLIENT with Object Tag</TITLE></HEAD>
<BODY>
<FORM>
<OBJECT ID="SVF for Web/Client" WIDTH=0 HEIGHT=0
CLASSID="CLSID:681CAF2E-78C7-40C9-B36E-E75FF0DE13D5">
	: プリンター一覧をクライアントコンピューターのブラウザーへ表示する
場合の固定CLASSID
<PARAM NAME="Url" VALUE="http://(IP Addressまたはサーバー名)/servlet/PrinterList">
	: 取得したプリンター情報を渡すサーブレットなどのURLを指定します。
<PARAM NAME="GetDriverName" VALUE="False">
	: プリンタードライバー名を取得。True = 取得する、False = 取得しない
<PARAM NAME="GetPrinterResol" VALUE="False">
	: プリンター解像度を取得。True = 取得する、False = 取得しない
<PARAM NAME="GetTrayInfo" VALUE="False">
	: プリンタートレイ情報を取得。True = 取得する、False = 取得しない
<PARAM NAME="Config" VALUE="http://(IP Addressまたはサーバー名)/****/xsvfweb.xml">
	: XSvfWeb.ini(印刷実行に関する設定ファイル)の内容を変更します。
</OBJECT>
</FORM>
</BODY>
</HTML>

サーバー側(実行されるJavaプログラム/PrinterList)

public void doPost(HttpServletRequest request, HttpServletResponse response) 
                    throws ServletException, IOException {
        PrintWriter out = new PrintWriter (response.getOutputStream());
        response.setContentType("text/html"); 
        String Printer1 = request.getParameter("P0");
        String Printer2 = request.getParameter("P1");
    //クライアント側からプリンター情報を格納します。
        String Printer3 = request.getParameter("P2");
        String Printer4 = request.getParameter("P3");
        String Printer5 = request.getParameter("P4");
        out.println("<HTML>");
        out.println("<HEAD><TITLE>WEB CLIENT Install</TITLE></HEAD>");
        out.println("<BODY>");
    // Action=***には、実行ボタンが押された際に呼び出す
    // Javaプログラムのディレクトリを記します。
        out.println("<FORM ACTION=\"/servlet/WebClient_servlet\" METHOD=\"Post\">");
        out.println("<B>プリンター一覧</B><BR>");
        out.println("<BR>");
        out.println("Printer1:");
        out.println("<input type=\"radio\"  name=\"Check\" value=\""+Printer1+"\"checked>");
        out.println(Printer1);
        out.println("Printer2:");
        out.println("<input type=\"radio\"  name=\"Check\" value=\""+Printer2+"\">");
        out.println(Printer2);
        out.println("Printer3:");
        out.println("<input type=\"radio\"  name=\"Check\" value=\""+Printer3+"\">");
        out.println(Printer3);
        out.println("Printer4:");
        out.println("<input type=\"radio\" name=\"Check\" value=\""+Printer4+"\">");
        out.println(Printer4);
        out.println("Printer5");
        out.println("<input type=\"radio\"  name=\"Check\" value=\""+Printer5+"\">");
        out.println(Printer5);
    // ここまではラジオボタンを表示するための記述です。
    // 実際に出力するときは任意に記述します。
    // typeを「submit」にすることで、<FORM>タグで指定されているActionが動作し、
    // この場合JavaサーブレットのWebClient_servletが実行されます。
        out.println("<input type=\"submit\" name=\"Execute\"value=\"印刷実行\" >");
        out.println("</FORM>");
        out.println("</BODY>");
        out.println("</HTML>");
        out.close();
 }