Criando PDF via jasper

Para criação de PDFs em aplicações Web recomendo o Jasper, já que sua comunidade é extensa e possui diversos recursos. Neste post usaremos o Back-End java.

Vamos começar abrindo o IReport para criar um template que será chamado no serviço.

Após a criação do novo template, salvar o arquivo exemplo.jrxml na pasta resources da aplicação.

screen-shot-2016-11-03-at-11-13-32-2

Agora iremos abrir o template em branco, entrar em preferences e alterar a language para java:

screen-shot-2016-11-03-at-11-14-59

Ao criar os fields que irão receber os valores enviados pela aplicação java, devemos estar atentos para manter os nomes dos fields iguais aos do Objeto no java. Alterar também o tipo do field, se necessário. (nesse caso o listReports é um List):

screen-shot-2016-11-03-at-11-16-45-2

A partir desse momento, podemos criar o template somente arrastando os fields. Lembrando que a paginada é subdividida em várias partes, como Title, Last Page Footer (aparecerá somente na última página), e deve ser usado de acordo com a necessidade de cada caso. Neste exemplo, usaremos o Title e Deatail 1:

screen-shot-2016-11-03-at-11-23-10-2

Para inserir a lista no Pdf, devemos criar um Subreport encontrado na Palette:
screen-shot-2016-11-03-at-11-27-03

Arraste o subreport para o Detail 1, e assim, como o arquivo exemplo.jxml, crie o subExemplo.jxml na pasta resource da aplicação. E lembre-se de manter os nomes dos arquivos iguais ao que foi usado na aplicação java. Por estar sendo usado via serviços lidando com List de Java teremos que alterar o XML, assim, independentemente de onde a aplicação estiver rodando, o path do arquivo de subreport sempre estará fixo. Dentro da tag subreport alterar dessa forma:

screen-shot-2016-11-03-at-11-33-39

Alterar também o parameter:
screen-shot-2016-11-03-at-11-34-27

Após os ajustes do arquivo exemplo.jxml, deve-se buidar esse arquivo para criar o arquivo .jasper. Para fazer isso, basta clicar no botão com um martelo:

screen-shot-2016-11-03-at-11-48-28

Para finalizar: Somente criamos o template do subreport com os fields referentes.

screen-shot-2016-11-03-at-11-50-57-2

Back-End:

Iniciaremos baixando as dependências .jar na aplicação:

screen-shot-2016-11-03-at-10-07-16

Para desenvolver o Template do PDF, usar o IReport Designer:

http://community.jaspersoft.com/project/ireport-designer/releases

Desenvolvendo:

Irei criar um serviço para expor em uma nova aba o PDF, porém, o Jasper não se limita somente a essa função. Pode-se também criar o arquivo para download direto ou armazenar o File para envio por e-mail e outros.

Neste exemplo, vamos utilizar as Annotation do Spring-Boot. Para mais informações acesse:https://projects.spring.io/spring-boot/

Classe de Controller:

screen-shot-2016-11-03-at-12-23-03

Classe ObjetoReport:

screen-shot-2016-11-03-at-10-16-30

Classe ListReport:

screen-shot-2016-11-03-at-10-17-38

Na API do sistema que irá ter o PDF, faremos a construção dos valores vindos de serviços os mockados, para depois transformá-los de arquivo jasper em um FILE. Após montar os Objetos com os valores que estarão no PDF, chame o serviço e teremos esse PDF.

PDF criado nesse POST: exemplo

Agradeço a todos e qualquer dúvida postem nos comentários.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>