Se você, como eu, se depara com a necessidade de criar relatórios rapidamente para seus projetos PHP, mas não encontra nenhuma engine de geração e gerenciamento ideal, caindo sempre na necessidade de usar transformadores de Html para PDF, como o html2pdf, ou as bibliotecas FPDF ou Zend_PDF, saiba que é possível utilicar as excelentes ferramentas Jaspersoft, desenvolvidas em Java, através de um cliente PHP para Jaspersoft Server oficial da empresa.

Relatórios Jaspersoft via REST

Ao invés das soluções que indicam a utilização de  um Java bridge com PHP, o que nunca foi para mim uma indicação de solução ideal, é possível utilizar os serviços REST disponíveis no Jaspersoft Server, por meio do cliente PHP oficial.

Baixando o PHP Client

O projeto do wrapper PHP para os serviços REST do Jaspersoft Server está disponível em um repositório Github, que pode ser acessado pela url: https://github.com/Jaspersoft/jrs-rest-php-client

Preparando a classe

Para utilizar a classe cliente primeiramente é necessário invocar o objeto cliente. Uma vez inicializado você pode utilizar suas funções. O trecho de código abaixo mostra como:

Serviço de Relatórios (Report Service)

Recuperando um relatório em HTML

O código à seguir executa uma solicitação para um relatório AllAccounts (exemplo instalado com a distribuição do Jaspersoft Server). Como o resultado esta em HTML, nós podemos simplismente emitir um echo para apresentar ao cliente. Quando solicitados relatórios de resultado binário, PDF por exemplo, é possível salvar, enviar por email ou possibilitar o download do mesmo.

Listando as opções do relatório

Para listar as opções do relatório execute o comando getOptions com a url do mesmo. Elas podem ser listadas, por exemplo, por meio da iteração do array retornado e impressão do seu label.

Executando um relatório com parâmetros de entrada (input controls)

É possível passar aos relatórios criados para receberem parâmetros de entrada (input controls) por meio de arrays e seu envio pelos argumentos da função de execução do relatório.

Download de relatório em PDF

Para oferecer o download em PDF de um relatório, deve-se passar a parâmetro de tipo de formato na execução e preparar o cabeçalho de retorno para o cliente.

Conclusões

Devido à pouca oferta de geradores de relatórios nativos na linguagem PHP, a escolha de uma engine escrita em Java torna-se interessante e viável quando esta oferece conexões modernas como os serviços REST.

Portanto, utilizar uma solução híbrida em Java+PHP por meio de Jaspersoft Server e seus relatórios é um grande investimento de tempo de aprendizado visando qualidade do sistema e produtividade.

Espero que este artigo auxilie àqueles que estavam em busca de uma solução como eu.


2 comentários

Adan · outubro 24, 2014 às 2:41 pm

Muito bom o artigo. Esse assunto é realmente uma pedra no sapato para mim.

Veja, não entendi bem a forma como chamou a função na preparação da classe. Não encontrei o arquivo “client/JasperClient.php” quando baixei a biblioteca do repositório e por isso me confundi com o propósito de seu exemplo.

Poderia detalhar melhor?

    nunomazer · novembro 14, 2014 às 6:50 pm

    Desde que escrevi este artigo a biblioteca mudou, agora precisa instanciar fazer


    use Jaspersoft\Client\Client as jc;
    ...
    $client = new Client(...);

    Vou escrever outro artigo atualizando o uso da bilbioteca

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Complete a fórmula para verificação * Time limit is exhausted. Please reload CAPTCHA.

Pin It on Pinterest

Share This

Share This

Share this post with your friends!