「/api/reports/{id}/jobs/render」APIを実行して生成されたレポートのデータは、ActiveReports Serverの内部に一時的にキャッシュされます。レポートをPDFやExcelなどの形式に保存する場合に、「/api/reports/{id}/jobs/export」APIを使用すると、このキャッシュからエクスポートされるので、毎回レポートを生成する必要がなくなります。
また、「/api/reports/{id}/jobs/export」でエクスポートされたファイルは、ActiveReports Server上に一時的に保存され、リンクからアクセスすることができるので、複数人でエクスポートしたファイルを閲覧する場合にも便利です。以下はJavaScriptで、エクスポートされたPDFをiframe上に表示する一例です。
(サンプルコード)
---------------------------------------------------------------------------------------------------
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
// API実行に必要なセキュリティトークン。
//取得方法は「http://docs.grapecity.com/help/activereports-server-admin-11/#Get%20a%20Security%20Token.html」
var _securityToken = "xxxxxxxxxxxxxx";
// ActiveReports 11.0J ServerのURLを設定します。
var _URI = 'http://activereports_server_url:8080/';
// 実行するレポートのID。
// 取得方法は「https://activereportsserver.zendesk.com/hc/ja/articles/115009896588」
var report_id = "xxxxxxxxxxxxxx";
// 生成済みのレポートのキャッシュのID。
// 取得方法は「https://activereportsserver.zendesk.com/hc/ja/articles/115011129027」
var doc_id = "xxxxxxxxxxxxxxxx"
var xhr = new XMLHttpRequest();
function ViewPDF() {
var Command = _URI + 'api/reports/' + report_id + '/jobs/export';
var data = null;
xhr = new XMLHttpRequest();
xhr.open("POST", Command, true);
xhr.setRequestHeader("authtoken", _securityToken);
xhr.onreadystatechange = processResponse;
data = "{\"ExtensionName\": \"PDF\", \"DocumentId\": \"" + doc_id + "\"}";
xhr.responseType = "binary";
xhr.send(data);
}
function processResponse() {
if (xhr.readyState == 4) {
if (xhr.status == 200 || xhr.status == 201) {
// iframeのURLを設定します。
$('#PDFframe')[0].contentDocument.location.replace(_URI + 'cache/' + xhr.response);
} else {
// エラー処理
alert("エラー");
}
}
}
</script>
</head>
<body>
<input id="Button1" type="button" value="PDF出力" onclick="ViewPDF()"/><br />
<iframe id="PDFframe" height="600" width="800" src="" ></iframe>
</body>
---------------------------------------------------------------------------------------------------
0 コメント