ActiveReportsは、レポート生成時(Runメソッド実行時)や、デザイン画面上で[レポートの設定]ダイアログを表示したときに、その環境のプリンタドライバから用紙サイズ等の情報を取得します。その際に参照されるプリンタは、(特に指定しない限り)その環境上で「通常使うプリンタ」に指定されているものです。この機能は、開発者が用紙に関する情報をひとつひとつレポートに設定しなくてもよい反面、下記に挙げる問題を引き起こします。
上述の問題を回避するために、ActiveReportsには仮想プリンタ機能が用意されています。仮想プリンタを指定した場合、レポートは実行環境に接続されたプリンタからの情報取得は行わず、用紙情報はユーザーが任意に指定します。この結果、レポートの実行環境に接続されたプリンタに依存しないレポートの生成が可能となります。
コードで設定します。
Visual Basic
| Visual Basicコード |
コードのコピー
|
|---|---|
Private Sub SectionReport1_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart
' 仮想プリンタを使用します。
Me.Document.Printer.PrinterName = ""
' 用紙サイズを「A4縦」に設定します。
Me.PageSettings.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4
Me.PageSettings.Orientation = GrapeCity.ActiveReports.Document.Section.PageOrientation.Portrait
End Sub
|
|
C#
| C#コード |
コードのコピー
|
|---|---|
private void SectionReport1_ReportStart(object sender, EventArgs e)
{
// 仮想プリンタを使用します。
this.Document.Printer.PrinterName = "";
// 用紙サイズを「A4縦」に設定します。
this.PageSettings.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4;
this.PageSettings.Orientation = GrapeCity.ActiveReports.Document.Section.PageOrientation.Portrait;
}
|
|
仮想プリンタが特に有効となるのは、以下のような場合です。