カスタム アプリケーション内での RSClientPrint コントロールの使用
Microsoft ActiveX コントロールである RSClientPrint を使用すると、HTML ビューアで表示されたレポートをクライアント側で印刷することができます。このコントロールには [印刷] ダイアログ ボックスがあり、印刷ジョブの開始、レポートのプレビュー、印刷するページの指定、余白の変更を行うことができます。クライアント側での印刷操作の間、レポート サーバーが画像 (EMF) 表示拡張機能でレポートを表示し、オペレーティング システムの印刷機能を使用して印刷ジョブを作成し、そのジョブをプリンタに送ります。
クライアント側の印刷機能を使用すると、ユーザーのコンピュータ上のブラウザの印刷設定を使用せずに、レポートのページのサイズ、余白、ヘッダー テキスト、フッター テキストを使用して印刷出力を生成できるため、HTML レポートの印刷を制御して品質を向上させることができます。このコントロールは、レポートのプロパティ値を読み込んで、ページ サイズと余白を設定します。
開発者がサードパーティのツール バーやビューアでクライアント側の印刷機能を有効にする場合は、RSClientPrint COM オブジェクトを通じて ActiveX コントロールにアクセスすることができます。このコントロールは自由に配布してかまいません。以下にコントロールを使用する上での推奨事項を示します。
- コントロールを使用して、Web ベースのレポートの印刷を強化することができます。Microsoft .NET Framework と互換性のある任意のプログラミング言語またはスクリプトからオブジェクトを指定できます。このコントロールは、Microsoft Windows フォーム アプリケーションからの利用は想定していません。
- Reporting Services プログラム ファイルに含まれている .cab ファイルをコピーし、カスタム アプリケーションのコード ベースに追加します。
- <OBJECT> タグを使用してコントロールを指定します。
- OBJECT CODEBASE 属性では、.cab ファイルに対する相対 URL または完全修飾 URL を指定します。
- アプリケーションで使用しているバージョンを追跡するため、.cab ファイルに対する固有のアプリケーション バージョン情報を指定します。
- Books Online の画像 (EMF) 表示に関するトピックを参照し、印刷プレビューおよび出力用にページを表示する方法を確認します。
RSClientPrint の概要
このコントロールによって表示されるカスタム印刷ダイアログ ボックスでは、印刷プレビュー、特定のページや範囲を指定するためのページ選択、ページ余白、ページの向きなど、一般的な印刷ダイアログ ボックスの機能がサポートされています。コントロールは CAB ファイルとしてパッケージ化されています。[印刷] ダイアログ ボックス内のテキストは、SQL サーバーがサポートするすべての言語に向けてローカライズされています。RSClientPrint ActiveX コントロールでは、画像表示拡張機能 (EMF) を使用してレポートが印刷されます。EMF デバイス情報として StartPage、EndPage、MarginBottom、MarginLeft、MarginTop、MarginRight、PageHeight、および PageWidth が使用されます。画像表示に対するその他のデバイス情報の設定はサポートされません。
言語サポート
印刷コントロールでは、ユーザー インターフェイスのテキストがさまざまな言語で表示され、異なる測定系を使用した入力値を受け付けます。使われる言語と測定系は、Culture プロパティと UICulture プロパティで決まります。どちらのプロパティも LCID 値を受け付けます。サポートされている言語から派生した言語の LCID を指定すると、最も近い言語が選択されます。サポート対象外で、近い言語もない LCID を指定すると、英語 (U.S.) となります。
コード内での RSClientPrint の使用
この ActiveX コントロールとそのメソッドおよびプロパティにプログラムからアクセスするには、RSClientPrint オブジェクトを使用します。このコントロールでは、印刷プレビュー用のモーダル ダイアログが提供されます。
既定値の指定
[印刷] ダイアログ ボックスに、レポートの余白やページの各値を初期設定することができます。既定では、[印刷] ダイアログ ボックスはレポート定義の値で初期化されます。既定値を使用することも、オブジェクトのプロパティを設定して異なる値を指定することもできます。
サイズはすべてミリメートル単位で設定されます。Culture および UICulture がメートル法を使わないロケールに設定されている場合は、実行時に単位が変換されます。
ページのサイズと余白でどの値が使用されるかを確認するために、GetProperties メソッドを使用して以下の既定値を取得することができます。
- PageHeight と PageWidth は、既定のページの高さと幅を示します。印刷コントロールを起動すると、現在選択されているプリンタで利用できる用紙サイズの中から、これらのプロパティ値に最も近いサイズが選択されます。PageWidth が PageHeight より大きい場合は横向きに設定されます。そうでない場合は縦向きに設定されます。
- LeftMargin、RightMargin、TopMargin、および BottomMargin は、既定ではすべて 0.5 インチに設定されます。
これらのプロパティは、レポート サーバー上の Item プロパティ コレクションに格納されます。値は、レポート定義が更新されるたびに上書きされます。
RSClientPrint プロパティ
プロパティ | 型 | RW | 既定値 | 説明 |
---|---|---|---|---|
MarginLeft |
Double |
RW |
レポートにより設定 |
左余白を取得または設定します。開発者が設定せず、レポートにも指定がない場合の既定値は 12.2 ミリメートルです。レポートの余白の詳細については、「LeftMargin 要素 (RDL)」を参照してください。 |
MarginRight |
Double |
RW |
レポートにより設定 |
右余白を取得または設定します。開発者が設定せず、レポートにも指定がない場合の既定値は 12.2 ミリメートルです。レポートの余白の詳細については、「RightMargin 要素 (RDL)」を参照してください。 |
MarginTop |
Double |
RW |
レポートにより設定 |
上余白を取得または設定します。開発者が設定せず、レポートにも指定がない場合の既定値は 12.2 ミリメートルです。レポートの余白の詳細については、「TopMargin 要素 (RDL)」を参照してください。 |
MarginBottom |
Double |
RW |
レポートにより設定 |
下余白を取得または設定します。開発者が設定せず、レポートにも指定がない場合の既定値は 12.2 ミリメートルです。レポートの余白の詳細については、「BottomMargin 要素 (RDL)」を参照してください。 |
PageWidth |
Double |
RW |
レポートにより設定 |
ページの幅を取得または設定します。開発者が設定せず、レポートにも定義がない場合の既定値は 215.9 ミリメートルです。 |
PageHeight |
Double |
RW |
レポートにより設定 |
ページの高さを取得または設定します。開発者が設定せず、レポートにも定義がない場合の既定値は 279.4 ミリメートルです。 |
Culture |
Int32 |
RW |
ブラウザのロケール |
ロケール ID (LCID) を指定します。この値によりユーザー入力の測定単位が決まります。たとえば、ユーザーが「3」と入力した場合、言語がフランス語の場合にはミリメートル、英語 (U.S.) の場合にはインチを単位とします。有効な値は、1028、1031、1033、1036、1040、1041、1042、2052、3082 です。 |
UICulture |
String |
RW |
クライアントのカルチャ |
ダイアログ ボックスの文字列のローカライズを指定します。[印刷] ダイアログ内のテキストは、簡体字中国語、繁体字中国語、英語、フランス語、ドイツ語、イタリア語、日本語、韓国語、スペイン語にローカライズされています。有効な値は、1028、1031、1033、1036、1040、1041、1042、2052、3082 です。 |
Authenticate |
Boolean |
RW |
False |
セッション外印刷の接続を開始するためにコントロールからレポート サーバーに GET コマンドを発行するかどうかを指定します。 |
Authenticate プロパティを設定する状況
ブラウザ セッションの内部から印刷を行う場合は、Authenticate プロパティを設定する必要はありません。アクティブなセッションのコンテキストでは、印刷コントロールからレポート サーバーへの要求はすべてブラウザによって処理されます。レポート サーバーへの通信に必要なセッション変数はブラウザによって設定されます。
セッション外印刷を行う場合 (レポートを最初に開かずに直接プリンタに送る場合など) は、レポート サーバーとのセッションをセットアップするために、印刷コントロールが HTTP GET 要求を発行する必要があります。GET 要求を発行するには、Authenticate を True に設定します。
Windows 統合セキュリティまたは基本認証を使用している場合は、GET 要求を発行するだけで済みます。フォーム認証を使用している場合は、Authenticate プロパティは無視されます。アプリケーション コードでセッションを設定し、用意したカスタム セキュリティ拡張機能を使用してユーザーを認証する必要があります。フォーム認証を使用する場合は、認証 cookie の有効期限を、セッションが十分な期間にわたって維持される値に設定してください。この値を低く設定しすぎると、cookie の有効期限が切れるたびに、ユーザーにログオン資格情報の入力が要求されます。
RSClientPrint の Print メソッド
RSClientPrint オブジェクトは、[印刷] ダイアログ ボックスを表示するための Print メソッドをサポートしています。Print メソッドには、以下の引数があります。
引数 | In/Out | 型 | 説明 |
---|---|---|---|
ServerPath |
In |
String |
レポート サーバーの仮想ディレクトリを指定します (たとえば https://adventure-works/reportserver)。 |
ReportPathParameters |
In |
String |
パラメータを含む、レポート サーバー フォルダ名前空間内のレポートの完全な名前を指定します。レポートは、URL にアクセスすることによって取得されます。たとえば、「/AdventureWorks Sample Reports/Employee Sales Summary&EmpID=1234」のように指定します。 |
ReportName |
In |
String |
レポートの短縮名です (上の例では、短縮名は「Employee Sales Summary」です)。ここで設定した内容は、[印刷] ダイアログ ボックスと印刷キューに表示されます。 |
例
以下の HTML の例では、JavaScript 内で .cab ファイル、Print メソッド、プロパティを指定する方法を示します。
<BODY onload="Print()">
<OBJECT ID="RSClientPrint" CLASSID="CLSID:FA91DF8D-53AB-455D-AB20-F2F023E498D3" CODEBASE="<URL to the .CAB file>#Version=<your application version information>" VIEWASTEXT></OBJECT>
<script language="javascript">
function Print()
{
RSClientPrint.MarginLeft = 12.7;
RSClientPrint.MarginTop = 12.7;
RSClientPrint.MarginRight = 12.7;
RSClientPrint.MarginBottom = 12.7;
RSClientPrint.Culture = 1033;
RSClientPrint.UICulture = 9;
RSClientPrint.Print('https://localhost/rtm', '%2fEmployee_Sales_Summary&ReportMonth=6&ReportYear=2004&EmpID=20', 'Employee_Sales_Summary')
}
</script>
</BODY>