Estou fazendo um relatório mensal de um aplicação php com o Laravel 5.7, mas ele está retornando apenas informações NULL provenientes da página através do banco de dados. Estou usando o Mysql. Alguém pode ajudar? Este é meu controlador.
class ReportController extends Controller
{
public function index(){
$output = public_path() . '/reports/' . time() . '_MidiaSocial';
$input = public_path().'/reports/Sistema.jrxml';
$report = new PHPJasper;
$report->process(
$input,
$output,
array("pdf"),
array(),
[
'driver' => 'generic',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'calculosorte'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'jdbc_driver' => 'com.mysql.jdbc.Driver',
'jdbc_url' => 'jdbc:mysql://'.env('DB_HOST', 'localhost').':'.env('DB_PORT', '3306').';databaseName='.env('DB_DATABASE', 'calculosorte'),
'jdbc_dir' => base_path().env('JDBC_DIR', 'vendor/geekcom/phpjasper/bin/jasperstarter/jdbc/')
]
)->execute();
$file = $output.'.pdf';
$path = $file;
if (!file_exists($file)) {
abort(404);
}
$file = file_get_contents($file);
unlink($path);
return response($file, 200)
->header('Content-Type', 'application/pdf')
->header('Content-Disposition', 'inline; filename="midia_social.pdf"');
}
}
conseguiu resolver como man?
Fala cara… foi mal a demora. Eu conseguir da seguinte maneira.
Nesse tipo de relatório eu passei a consulta pegando as datas e mais um parâmetro. Qualquer duvida só perguntar. Valeu
public function relatorioMensal(Request $req){
$data_inicio = Date('Y-m-d', strtotime($req->data_inicio));
$data_fim = Date('Y-m-d', strtotime($req->data_fim));
$propaganda = $req->propaganda;
$output = public_path().'/reports/'.time().'_RelatorioMensal';
$report = new JasperPHP;
$report->process(
public_path().'/reports/RelatorioMensal.jrxml',
$output,
['pdf'],
['data_inicio' => $data_inicio, 'data_fim' => $data_fim, 'propaganda'=>$propaganda],
[
'driver' => 'generic',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'database' => env('DB_DATABASE', 'calculosorte'),
'jdbc_driver' => 'com.mysql.jdbc.Driver',
'jdbc_url' => 'jdbc:mysql://'.env('DB_HOST', '127.0.0.1').':'.env('DB_PORT', '3306').'/'.env('DB_DATABASE', 'calculosorte'),
'jdbc_dir' => base_path().env('JDBC_DIR', '/vendor/lavela/phpjasper/bin/jasperstarter/jdbc'),
]
)->execute();
$file = $output.'.pdf';
$path = $file;
if (!file_exists($file)) {
abort(404);
}
$file = file_get_contents($file);
unlink($path);
return response($file, 200)
->header('Content-Type', 'application/pdf')
->header('Content-Disposition', 'inline; filename="relatorio_mensal.pdf"');
}
em relação a hospedagem, vc teve algum problema? um carinha aqui do grupo disse que a maioria dos servidores não aceitam relatórios jasper.
Ai você vai ter que ver se a sua hospedagem tem suporte… algumas tem suporte sim. Na minha hospedagem infelizmente não tem…eu acho que só tinha para o plano VPS e não no compartilhado.
entendi, então vou tentar com DOMPDF o problema que já perdi 2 dias e não sair do lugar kkkkkkkk
Esse código ai está funcionando perfeitamente… o único problema vai ser a questão de suporte no servidor. Mas se vc tiver suporte pode seguir por esse codigo que vai da certo.
Ola amigos, estou usando uma biblioteca http://www.jasperphp.com que roda só com PHP e resolve uns 90% do que a versão em java faz, e é bem rápida para rodar os relatórios e tals, vale a pena conferir