 |
重要: 本トピックで紹介しているWebサービスを使用してのActiveReports 11.0J Serverとの連携方法は、ActiveReports 9.0J Serverとの互換性のために残されています。新規でActiveReports 11.0J Serverとの連携するアプリケーション等を開発する場合は、REST APIを使用してください。
|
ActiveReports Serverに保存されたレポートは、RenderReportメソッドを使用してPDFやExcelなどの形式で出力することができます。このトピックでは、セクションレポート(XML)をPDF形式で出力する方法について説明します。
 |
メモ: セクションレポート(コード)やページレポートの場合も、同様の手順でPDF形式での出力が可能です。 |
- Visual Studioの[ファイル]メニューから[新しいプロジェクト]を選択します。
- [新しいプロジェクト]ダイアログが表示されたら、テンプレートリストで[Visual C#]、または[Visual Basic]、次に[Windows]の順にクリックし、[コンソールアプリケーション]を選択します。
- プロジェクトの名前をRenderReportに変更し、[OK]をクリックします。
 |
メモ: プロジェクトのターゲットフレームワークは.NET Framework 4.5以上に設定されている必要があります。 |
- Visual Studioの[プロジェクト]メニューから[サービス参照の追加]を選択します。
- [サービス参照の追加]ダイアログが表示されたら、[アドレス]に以下のように入力します。
以下をコピーして[アドレス]ボックスに貼り付け、"localhost:8080"の部分を、ActiveReports 11.0J ServerをインストールしたサイトのURL、およびポートに置き換えます。 |
コードのコピー
|
http://localhost:8080/ReportService.svc |
- [移動]をクリックします。[サービス]ペインにReportServiceが表示されたら、それを展開してサービスインタフェースを選択します。そのインタフェースで使用可能な操作が右側のペインに表示されます。
- 使用する名前空間の名前をReportServiceに変更し、[OK]をクリックします。追加した参照が[ソリューションエクスプローラ]に表示されます。
- app.configファイルを開き、endpoint要素内のaddress属性に、手順5で設定したサービスのアドレスが正しく設定されていることを確認してください。正しく設定されていない場合は、手順5で設定したアドレスに置き換えてください。
app.configファイル内のendpoint要素内のaddress属性の値を確認します。 |
コードのコピー
|
<client> <endpoint address="http://localhost:8080/ReportService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IReportService" contract="ReportService.IReportService" name="WSHttpBinding_IReportService" /> </client>
|
 |
注意:ActiveReports Serverをインストールした先のサーバーの構成や設定によっては、サービスのアドレスが構成ファイルに正しく自動設定されない場合があります。 |
- Program.cs、またはModule1.vbで、以下のようにコードの先頭にusing/Importsステートメントを追加します。
Visual Basic
Visual Basicコード (コードの先頭にあるImports文のリストに追加します。) |
コードのコピー
|
Imports System.IO
Imports System.Net
Imports RenderReport.ReportService
|
C#
C#コード (コードの先頭にあるusing文のリストに追加します。) |
コードのコピー
|
using System.IO;
using System.Net;
using RenderReport.ReportService;
|
- Program.cs、またはModule1.vbで、Mainメソッドに以下のコードを追加します。
Visual Basic
Visual Basicコード (Module1モジュール定義のMainメソッドに以下のコードを貼り付けます。) |
コードのコピー
|
Dim serverUserName = "USER"
Dim serverUserPwd = "PASS"
Dim reportService = New ReportServiceClient("WSHttpBinding_IReportService")
Dim securityToken = reportService.Login(serverUserName, serverUserPwd, Nothing, True)
' 内部ストレージからレポートの一覧を取得します。
Dim description = reportService.[Select](securityToken, New Query())
' 出力対象の帳票のレポート情報を取得
Dim TargetRepDescription As New ReportDescription()
For Each des As ReportDescription In description
If des.Name = "払込取扱票" Then
TargetRepDescription = des
Exit For
End If
Next
' PDFで出力
Dim result = reportService.RenderReport(securityToken, TargetRepDescription, New RenderOptions() With {.Extension = "PDF"})
Dim info As RequestInfo
Do
info = reportService.GetRequestStatus(securityToken, Result.Info.RequestId).Info
Loop While info.State = RequestState.Pending OrElse info.State = RequestState.Running
If info.State = RequestState.Accomplished Then
Using client = New WebClient()
client.DownloadFile(http://localhost:8080/cache/ + info.PrimaryUrl, "C:\work\test.pdf")
End Using
End If
|
C#
C#コード (Programクラス定義のMainメソッドに以下のコードを貼り付けます。) |
コードのコピー
|
var serverUserName = "USER";
var serverUserPwd = "PASS";
var reportService = new ReportServiceClient("WSHttpBinding_IReportService");
var securityToken = reportService.Login(serverUserName, serverUserPwd, null, true);
// 内部ストレージからレポートの一覧を取得します。
var description = reportService.Select(securityToken, new Query());
// 出力対象の帳票のレポート情報を取得
ReportDescription TargetRepDescription = new ReportDescription();
foreach (var des in description)
{
if (des.Name == "払込取扱票")
{
TargetRepDescription = des;
break;
}
}
// PDFで出力
var result = reportService.RenderReport(securityToken, TargetRepDescription, new RenderOptions { Extension = "PDF" });
RequestInfo info;
do
{
info = reportService.GetRequestStatus(securityToken, result.Info.RequestId).Info;
} while (info.State == RequestState.Pending || info.State == RequestState.Running);
if (info.State == RequestState.Accomplished)
{
using (var client = new WebClient())
{
client.DownloadFile(http://localhost:8080/cache/ + info.PrimaryUrl, @"C:\work\test.pdf");
}
}
|
- プロジェクトを実行します。