概要
Crystal Reports UI からではなく、コードから印刷オプションを設定してプリンタを呼び出すことができます。このためには、PrintOptions クラスと、ReportDocument オブジェクト モデルの PrintToPrinter() メソッドを使用します。
CrystalReportViewer コントロールのツールバーに表示される[印刷]ボタンで印刷のニーズに対応できる場合は、別の印刷オプションを設定するコードを記述する必要はありません。
ただし、次のような特殊なシナリオでは、コード ベース方式でレポートを印刷する方が便利です。
- 印刷をいつ、どこで、どのように行うかを管理する。このためには、CrystalReportViewer コントロールのツールバーの[印刷]ボタンを無効にして、すべての印刷をコードによって管理します。
- レポートを表示せずにバックグラウンドで印刷する。印刷の設定はすべて ReportDocument モデルにあるので、CrystalReportViewer コントロールを持つレポートを表示せずに、このモデルをインスタンス化して設定します。
- Web クライアント用の印刷をすべて Web サーバーで集中管理する。Web クライアントに接続されているローカル プリンタに印刷ジョブを送信せずに、PrintToPrinter() メソッドを使用して、Web サーバーに接続されたプリンタに印刷ジョブを送信します。
注
このバックエンド印刷は、Crystal Reprots Server または BusinessObjects Enterprise に付属のレポート スケジュール フレームワークより機能が制限されます。これらの製品の詳細については、「アップグレード オプション」を参照してください。
このチュートリアルでは、まず印刷オプションを設定するリスト コントロールを、Web または Windows フォームの CrystalReportViewer コントロールの上に追加します。
そして、分離コード クラス内で CURRENT_PRINTER 文字列定数を作成し、使用するプリンタのパスをこの文字列定数に割り当てます。
次に、印刷の向き、用紙サイズ、および両面印刷の各設定用の印刷オプションを含む列挙に、各リスト コントロールをバインドします。別のリスト コントロールには、CURRENT_PRINTER 定数に現在指定されているプリンタのカスタム給紙設定が表示されます。カスタムの給紙方法を管理するには、ヘルパー メソッドを作成して、PrinterSettings をインスタンス化して現在のプリンタに割り当て、プリンタの給紙方法の配列を返すようにします。
次に、[レポートの印刷]ボタンにボタン クリック イベント メソッドを作成します。このイベント メソッドでは、リスト コントロールでの選択に基づく値を各印刷オプション プロパティに割り当てます。最後に、レポートは、CURRENT_PRINTER 定数に指定されているプリンタで印刷されます。
サンプル コード
このチュートリアルは、プロジェクトの完全バージョンを示す Visual Basic および C# のサンプル コードと共に提供されます。このチュートリアルの手順に従って新しいプロジェクトを作成するか、またはサンプル コード プロジェクトを開いて完全バージョンを使用します。
サンプル コードは言語とプロジェクト タイプに分類され、フォルダに格納されています。各サンプル コード バージョンのフォルダ名は次のとおりです。
- C# Web サイト:CS_Web_RDObjMod_SetPrintOptions
- C# Windows プロジェクト:CS_Win_RDObjMod_SetPrintOptions
- Visual Basic Web サイト:VB_Web_RDObjMod_SetPrintOptions
- Visual Basic Windows プロジェクト:VB_Win_RDObjMod_SetPrintOptions
これらのサンプルが格納されたフォルダを探すには、「チュートリアルのサンプル コード」を参照してください。