jasper报告通过laravel - 在网站html / php中显示报告

时间:2016-08-04 14:48:16

标签: php html angularjs laravel-5 jasper-reports

我正在使用jasper报告iReport工具从数据库生成一些报告。

全部完成,我使用名为Lavela / jasperPHP的库通过API生成报告并将其导出为pdf,xls ...

我的问题是,我想在我的网站的框架或容器中打开报告,现在的情况是我可以将报告下载到pdf和xls,或者在html页面中打开报告但不能在我的网站模板中打开iframe或容器或元素。

有任何帮助吗?

这是我的PHP控制器使用LARAVEL 5.1     

    $output = public_path() . '/report/'.time().'_CancelAck';
    $output = public_path() . '/report/'.time().'_CancelAck';
    $ext = "pdf";
    $data_file = public_path() . '/report/CancelAck.xml';
    $driver = 'xml';
    $xml_xpath = '/CancelResponse/CancelResult/ID';

    \JasperPHP::process(
        public_path() . '/report/report1.jrxml', 
        $output, 
        array($ext),
        array(),
        array(
  'driver' => 'mysql',
  'username' => 'root',
  'password' =>'',
  'host' => 'localhost',
  'database' => 'test',
  'port' => '3306',
 ),
        array('data_file' => $data_file, 'driver' => $driver, 'xml_xpath' => $xml_xpath),                   
        false,
        false
    )->execute();

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.time().'_CancelAck.'.$ext);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Content-Length: ' . filesize($output.'.'.$ext));
    flush();
    readfile($output.'.'.$ext);
    unlink($output.'.'.$ext);

}

}

这是我的路线:

  Route::get('/', function () {
  return view('welcome');
  });

Route::get('getreportService/','ReportController@getReport');

当我从网址调用服务时,我会按照自己的意愿获取报告,但我需要在我的网站上显示此报告。

1 个答案:

答案 0 :(得分:0)

您正在请求服务器创建可下载的内容。

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.time().'_CancelAck.'.$ext);

您需要找到合适的标头才能返回html / css内容。