Esta lib permite requisições às rotas rest2 do jasperserver a partir de um projeto em Laravel.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
José Tobias de Freitas Neto 704a4df0b9 Merge pull request 'feature: adding setRequestTimeout to JasperServerRequestService.' (#1) from feat-add-timeout-definition into main
Reviewed-on: #1
3 months ago
src feature: adding setRequestTimeout to JasperServerRequestService. 3 months ago
tools/php-cs-fixer Estrutura inicial 3 years ago
.gitignore Estrutura inicial 3 years ago
.styleci.yml Estrutura inicial 3 years ago
README.md Atualizando readme 1 year ago
composer.json Atualizando versão do laravel para a 11.0 1 year ago

README.md

JasperServer Laravel Integrator

Esta lib permite requisições às rotas rest2 do jasperserver a partir de um projeto em Laravel

Requisitos

  • PHP >= v7.1
  • Laravel >= v5.8
  • Composer >= v2

Como configurar o projeto?

  1. Adicione este repositório à lista de repositórios do composer em seu projeto laravel.
{
  "repositories": [
    {
      "type": "git",
      "url": "https://git.ae3tecnologia.com.br/AE3_TECNOLOGIA_OPENSOURCE/jasperserver-laravel-integrator"
    }
  ]
}
  1. Execute o comando a seguir para baixar esta lib ao vendor do seu projeto.
composer require ae3/jasperserver-laravel-integrator
  1. Configure as variáveis abaixo no .env do seu projeto.
JASPER_SERVER_URL="<A URL de acesso ao seu JasperServer>"
JASPER_SERVER_USERNAME="<Username de acesso>"
JASPER_SERVER_PASSWORD="<Password de acesso>"

Fazendo requisições ao servidor

Para efetuar as requisições ao servidor jasper, utilize o serviço JasperServerRequestServiceContract. Este serviço, além de conter o método call(uri) para efetuar a requisição e os métodos auxiliares de configuração.

Segue abaixo exemplo de requisição para um relatório chamado relatorio_teste, contendo um parâmetro chamado parametro_um:

$uri = '/relatorio_teste';

$report = $this->jasperServerRequestService
    ->addInputControl('parametro_um', 'valor_qualquer')
    ->setRequestTimeout(300)
    ->call($uri);

Por padrão os relatórios são retornados no formato html. Para especificar outro formato, basta utilizar o método setFormat disponível no serviço e o enum ReportFormatEnum com os formatos disponíveis:

$this->jasperServerRequestService
  ->setFormat(ReportFormatEnum::PDF)
  ...

Métodos inline() e download()

Caso queira forçar a renderização inline do relatório, basta utilizar a função inline() após o método call(). Veja o exemplo abaixo:

$uri = '/relatorio_teste';

$this->jasperServerRequestService
    ->addInputControl('parametro_um', 'valor_qualquer')
    ->setRequestTimeout(300)
    ->call($uri)
    ->inline();

Apenas arquivos que o navegador consegue renderizar serão exibidos. Caso contrário, o arquivo será baixado.

Caso queira forçar o download do arquivo, basta utilizar o método download('nome_do_arquivo'), veja o exemplo abaixo:

$uri = '/relatorio_teste';

$this->jasperServerRequestService
    ->addInputControl('parametro_um', 'valor_qualquer')
    ->setRequestTimeout(300)
    ->call($uri)
    ->download();

O nome do arquivo é opcional e, caso não seja informado, terá um valor randômico atribuído.

Caso você necessite obter o valor binário do relatório, pode utilizar o método getReport(). Exemplo:

$uri = '/relatorio_teste';

$report = $this->jasperServerRequestService
->addInputControl('parametro_um', 'valor_qualquer')
->setRequestTimeout(300)
->call($uri)
->getReport();