ドキュメント印刷 PrintStream

Q4
複数ファイルのプレビュー
[内容]
複数のファイルを一つのPreviewFormでプレビューしたい

A4
[解決方法]
PreviewFormは一つのPrintStreamDocumentしか扱えないので、マージ用の PrintStreamDocumentを用意し、そこに元のPrintStreamDocumentからコピーして 1つのオブジェクトとして利用します。


[サンプルコード]
/* httpDownloadを使いPrintServerのスプールファイルをダウンロード */
PrintStreamDocument PrintStreamDocument1 {
    if ( !$DESIGNTIME ) {
        var down = new httpDownload("http://printserver");
        append(down, "httpDownload1");

        /* httpDownloadのイベントをその親であるPrintStreamDocumentで処理。
        この処理が終了するまでダウンロードは一時停止*/
        Function OnAsyncDownload(e) {
            /* ダウンロードが成功したらそのレスポンスをExtractの引数にする */
            if ( e.response.status == 200 ){
                var rc = Extract(e.response);
                /* スプールファイルの最後のファイルを
                Extract後ダウンロードを終了 */
                if ( rc.status == 0 ) {
                     httpDownload1.Stop();
                    ^.PreviewForm1.StartPage(this);
                }
            /* エラーの場合はダウンロードを終了 */
            } else {
                 httpDownload1.Stop();
            }
        }

        Function OnExitDownload(e) {
            ^.Button1[0].Active = true;
            if ( ^.Button1[1].Active ) {
                ^.Button1[2].Active = true;
            }
            /* PrintStreamDocument1のページをPrintStreamDocument3へコピー */
            var count = GetPageCount();
            for (var i = 0 ; i < count ; i++ ) {
                var page = GetPage(i+1);
                ^.PrintStreamDocument3.AddPage(page);
            }
        }

    }
}


/* 1と同じ処理を2でも行う */
PrintStreamDocument PrintStreamDocument2 {
    if ( !$DESIGNTIME ) {
        var down = new httpDownload("http://printserver");
        append(down, "httpDownload1");
        /* httpDownloadのイベントをその親であるPrintStreamDocumentで処理。
        この処理が終了するまでダウンロードは一時停止 */

        Function OnAsyncDownload(e) {
            /* ダウンロードが成功したらそのレスポンスをExtractの引数にする */
            if ( e.response.status == 200 ) {
                var rc = Extract(e.response);
                /* スプールファイルの最後のファイルを
                Extract後ダウンロードを終了 */
                if ( rc.status == 0 ) {
                     httpDownload1.Stop();
                    ^.PreviewForm1.StartPage(this);
                }
            /* エラーの場合はダウンロードを終了 */
            } else {
                httpDownload1.Stop();
            }
        }

        Function OnExitDownload(e) {
            ^.Button1[1].Active = true;
            if ( ^.Button1[0].Active ) {
                ^.Button1[2].Active = true;
            }
            /* PrintStreamDocument2のページをPrintStreamDocument3へコピー */
            var count = GetPageCount();
            for (var i = 0 ; i < count ; i++ ) {
                var page = GetPage(i+1);
                ^.PrintStreamDocument3.AddPage(page);
            }
        }

    }
}


/* マージ用のPrintStreamDocument3 */
PrintStreamDocument PrintStreamDocument3;
PreviewForm PreviewForm1 {
    y=30;
    width &= ^.Width;
    height &= ^.Height-30;
}

Button Button1[3] {
    height=30;
    Layout = $HORIZONTAL;
    Title &= "プレビュー" + str(index);
    active = false;

    Function OnTouch(e) {
        switch(index) {
        case 0:
            Preview(^.PrintStreamDocument1);
            break;
        case 1:
            Preview(^.PrintStreamDocument2);
            break;
        case 2:
            Preview(^.PrintStreamDocument3);
            break;
        }
    }

    Function Preview (e) {
        ^.PreviewForm1.StartPage(e);
        var count = e.GetPageCount();
        for (var i = 0; i < count; i++ ) {
            ^.PreviewForm1.AddPage(i+1);
        }
        ^.PreviewForm1.EndPage();
    }
}

if ( !$DESIGNTIME ) {
    PrintStreamDocument1.httpDownload1.AddURL("/aaaa/00000[001-].pss");
    /* ダウンロードするファイル数がわかっている場合はtoも指定 */
    PrintStreamDocument2.httpDownload1.AddURL("/bbbb/00000[001-].pss");
    /* ダウンロードをスタート */
    PrintStreamDocument1.httpDownload1.Start();
    PrintStreamDocument2.httpDownload1.Start();
}

CRSファイル形式のサンプルを
  「複数ファイル プレビューサンプル(Psp_004.zip)
よりご利用いただけます。

管理番号:Psp_004
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ