我使用JasperReports服务器Web服务使用php curl以PDF格式检索报告。
不幸的是,我要生成的报告使用的值为输入控件
如果我没有为此输入控件提供值,我的报告可以正常工作,但每个值都为0.
根据官方指南:JasperReports Server Web Services Guide第24页,它说我应该在URL中使用 IC_GET_QUERY_DATA 参数,所以我做了它并提供了数据源的URI然后我使用 P_param_name 来提供参数的值,但是我无法使其工作,似乎报告没有使用这些值。
提前感谢您提出任何可能有用的意见!
答案 0 :(得分:0)
您可以考虑使用新的运行报告机制(“RESTv2服务”的一部分)。您可以将报表的输入控件作为URL中的查询项提供。多选输入可以根据需要进行多次定义。
例如,如果您向http:// [yourserver]发送GET请求:[port] /jasperserver/rest_v2/reports/uri/to/my_report.pdf?state=CA&state=OK&city=Sacramento
您将收到一个报告,其中State控件设置为“OK”和“CA”,City控件设置为“Sacramento”
使用REST php wrapper使这些请求更简单可能对您有所帮助。
可以像这样实现上述相同的例子:
$client = new JasperClient('yourserver', 'port', 'username', 'password', '/jasperserver');
$report_data = $client->runReport('/uri/to/my_report', 'pdf', null, null, array('state' => array('OK', 'CA'), 'city' => 'Sacramento'));
报告的二进制数据将存储在$report_data
中,无论您希望如何,都可以使用它。 (即:fwrite to file,stream to browser for download ...等)。