3-2-7 ストリームデータを使用して印刷する

<OBJECT>タグを使用した印刷の応用例として、サーバーにデータを作成せずに(ストリーム方式)クライアントコンピューターに接続しているプリンターから印刷する例を示します。


印刷データを作成せず、ストリームにより直接出力する例

クライアント側(呼び出し元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:A6B83C49-6736-4148-834A-6764C6273A87">
	: 通常使うプリンターへ印刷
<PARAM NAME="Raw" VALUE="http://(IP Addressまたはサーバー名)/servlet/StreamPrint">
	 : ここでは物理的に存在するファイルではなく、サーブレットを指定
<PARAM NAME="DocName" VALUE="SVF for Web/Client">
</OBJECT>
</FORM>
</BODY>
</HTML>

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

public void service(HttpServletRequest request, HttpServletResponse response) 
                    throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    OutputStream outstrm = response.getOutputStream();
    Vrw32 svf = new Vrw32();
    int ret = 0;
    ret = svf.VrInit();
    ret = svf.VrSetPrinter("","EMF"); //EMF出力用
    ret = svf.VrSetSpoolFileStream(outstrm); //ストリーム出力用の関数を使用する
    ret = svf.VrSetForm("svfxhachusho.xml",4);
    ret = svf.VrComout("/{SPLM 3}/"); //ファイル圧縮の指定
    ret = svf.VrsOut("発行年月日","2013/07/04");
    ret = svf.VrsOut("発注番号","000001");
    ret = svf.VrsOut("商品名","SVF for Web/Client");
    :
    ret = svf.VrEndRecord();
    :
    ret = svf.VrPrint();
    ret = svf.VrQuit();
    outstrm.flush();
    outstrm.close();
    :
}