ActiveReports for .NET 18.0J
仮想プリンタ
ActiveReportsユーザーガイド > 概念 > セクションレポートの概念 > 仮想プリンタ

レポート生成・印刷時の問題点

ActiveReportsは、レポート生成時(Runメソッド実行時)や、デザイン画面上で[レポートの設定]ダイアログを表示したときに、その環境のプリンタドライバから用紙サイズ等の情報を取得します。その際に参照されるプリンタは、(特に指定しない限り)その環境上で「通常使うプリンタ」に指定されているものです。この機能は、開発者が用紙に関する情報をひとつひとつレポートに設定しなくてもよい反面、下記に挙げる問題を引き起こします。


仮想プリンタとは

上述の問題を回避するために、ActiveReportsには仮想プリンタ機能が用意されています。仮想プリンタを指定した場合、レポートは実行環境に接続されたプリンタからの情報取得は行わず、用紙情報はユーザーが任意に指定します。この結果、レポートの実行環境に接続されたプリンタに依存しないレポートの生成が可能となります。

仮想プリンタを指定して生成したレポートをWindowsフォーム用のレポートビューワで印刷する場合、印刷を行うプリンタに関する情報がビューワに受け渡されないため、特に何も設定をしない場合、印刷を実際に行う環境上の「プリンタのデフォルト値」で印刷されます。

仮想プリンタの設定方法

コードで設定します。

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;
}

仮想プリンタが有効となるケース

仮想プリンタが特に有効となるのは、以下のような場合です。


関連トピック