API version 4

- ‐

PrintStreamDocument

PrintStream 印刷スプールファイル(PSS)をダウンロードするためのクラスです。

PrintStream 印刷スプールファイル(PSS)をPrintPreviewで表示・印刷するためのクラスです。

getメソッドもしくは、PrintableDocument.load メソッドで、PSSファイルのダウンロードができます。

ダウンロードの進行に伴うstatusプロパティの遷移・イベントの発生は下記のようになっています。

CRSコード

内部処理

ステータス

(初期状態)

STATUS_INITIAL

getメソッド呼び出し

→

00000001.pss取得

→

STATUS_GENERATINGに移行

  ↓

ExtractInfo発生

←

印刷定義情報ファイル抽出

ExtractPage発生

←

1ページ目SVG抽出

ExtractPage発生

←

2ページ目SVG抽出

  …

(00000001.pss全ページ抽出完了)

  ↓

00000002.pss取得

  …

最終pssファイル取得

  ↓

ExtractFinished発生

←

最終ページマーク検出

→

STATUS_FINISHEDに移行

  ↓

ダウンロード完了

PrintPreviewでのプレビュー表示・印刷手順

PrintStreamDocumentは、以下の手順でPrintPreviewに接続してプレビュー表示・印刷を行います。

  1. PrintPreview の document プロパティに、PrintStreamDocumentオブジェクトを設定します。documentプロパティは、PSSファイルのページ展開に連動して自動的にページを追加していくため、 get メソッド呼び出しの前後どちらで設定してもかまいません。

  2. PrintStreamDocumentオブジェクトの get メソッドを呼び出し、PSSファイルのダウンロードを開始します。ダウンロードが進行するにつれ、上記の表のとおり ExtractPage イベントが発生する毎にPrintPreviewへページが追加されていきます。

  3. ExtractFinished イベントが発生し、statusプロパティが``STATUS_FINISHED``になった時点で全ページの展開が完了します。この時点で、PrintPreviewの printDialog メソッドを呼び出すことで印刷ダイアログを表示し、印刷を実行できます。

Form formPrintStreamDocument {
   x = 0; y = 0; width = 800; height = 600;

   PrintStreamDocument pssDoc {
           function onExtractFinished(e) {
                   # 全ページの展開が完了したら印刷可能にする
                   ^.buttonPrint.enabled = true;
           }
           function onExtractFailed(e) {
                   messageBox("ダウンロードに失敗しました: " + e.message, "エラー", MB_ICON_STOP);
           }
   }

   PrintPreview preview {
           x = 8; y = 40; width = 784; height = 552;
   }

   Button buttonGet {
           x = 8; y = 8; width = 160; height = 24;
           title = "ダウンロード開始";
           function onTouch(e) {
                   ^.buttonPrint.enabled = false;
                   ^.preview.clearPages();
                   # document プロパティの設定は get 呼び出しの前後どちらでもよい
                   ^.preview.document = ^.pssDoc;
                   ^.pssDoc.get("http://printserver/psddata");
           }
   }

   Button buttonPrint {
           x = 176; y = 8; width = 160; height = 24;
           title = "印刷"; enabled = false;
           function onTouch(e) {
                   ^.preview.printDialog();
           }
   }
}

スタティックメソッドでのプレビュー表示・印刷手順

PrintPreviewコントロールを画面上に配置せず、 PrintPreview の previewDirect / printDialogDirect スタティックメソッドを 使う方法でも、プレビュー表示・印刷を行えます。

重要

previewDirect / printDialogDirect は、呼び出された時点でのPrintableDocumentの全ページを対象とします。

PrintStreamDocumentはページを逐次ダウンロードして展開するため、ダウンロード完了前(status が STATUS_FINISHED になる前)に呼び出すと、その時点までに展開済みのページのみが対象になってしまいます。

そのため、必ず ExtractFinished イベント発生後(全ページの展開完了後)に呼び出してください。

Form formPrintStreamDocument_direct {
   x = 0; y = 0; width = 800; height = 600;

   PrintStreamDocument pssDoc {
           function onExtractFinished(e) {
                   # 全ページの展開が完了したら別タブでプレビュー表示する
                   PrintPreview.previewDirect(^.pssDoc, true);
           }
           function onExtractFailed(e) {
                   messageBox("ダウンロードに失敗しました: " + e.message, "エラー", MB_ICON_STOP);
           }
   }

   Button buttonGet {
           x = 8; y = 8; width = 160; height = 24;
           title = "ダウンロード開始";
           function onTouch(e) {
                   ^.pssDoc.get("http://printserver/psddata");
           }
   }

   Button buttonPrintDirect {
           x = 176; y = 8; width = 160; height = 24;
           title = "直接印刷";
           function onTouch(e) {
                   # status が STATUS_FINISHED になっている場合のみ直接印刷する
                   if (^.pssDoc.status == STATUS_FINISHED) {
                           PrintPreview.printDialogDirect(^.pssDoc);
                   } else {
                           messageBox("ダウンロードが完了していません", "エラー", MB_ICON_STOP);
                   }
           }
   }
}

関連項目

PrintPreview、 PrintableDocument クラス