ReportMaker
O BISReports é o sistema do BIS para a geração de relatórios do sistema. A função deste serviço é oferecer funções e suporte para que a aplicação possa desenvolver relatórios em PDF de forma rápida e centralizada. Outra função bem clara do BISReports é centralizar a aparência dos relatórios em todo o sistema, oferecendo templates de cabeçalhos, rodapés, e blocos de conteúdos para serem usados pelas relatórios dos plugins/módulos.
![]() |
|
BISReport
BISReport é a classe principal do serviço. Esta classe é abstrata e deve ser estendida diretamente pela classe do relatório, ou por alguma classe "intermediária" usada para criar um template específico de relatório.
Os serviços oferecidos por esta classe são:
Conjunto de Fontes
Entre as características que devem ser uniformes em todos os relatórios do sistema estão as "Fontes" usadas para escrever as informações. Por isso a classe pai oferece um conjunto de fontes para ser utilizado nos relatórios. Os conjuntos definem o tipo de letra (fonte), e sua aparência (bold, italic, etc.). Essas fontes são obtidas pelos métodos:
- getBaseFontPlain() - Retorna a fonte padrão para relatório do sistema.
- getBaseFontItalic() - Retorna a fonte padrão com o formato itálico ativado.
- getBaseFontBold() - Retorna a fonte padrão com formato negrito ativado.
- getBaseFontBoldItalic() - Retorna a fonte padrão com o formato negrito e itálico ativado.
![]() |
|
Cabeçalhos e Rodapés
Outra característica do BISReport é a centralização dos cabeçalhos e rodapés disponíveis para serem utilizados nos relatórios. Há alguns modelos distintos de acordo com as informações que precisam ser exibidas, como títulos e subtítulos, datas de períodos, etc.
Abaixo estão listados os modelos existentes atualmente:
Métodos Utilitários
A classe oferece alguns métodos que facilitam a escrita dos relatórios. São funções e blocos de códigos que costumam se repetir em vários momentos/relatórios.
createClippedTextField
Este método cria um template[1] para escrita de um texto e aplica um clip no tamanho desejado.
É usado (ou deve ser usado) durante a escrita de campos de texto que podem ter tamanho variável, e algumas vezes até maior do que o espaço destinado à ele. Utilizando esta técnica o campo será "cortado" no seu limite, evitando que a informação atropele outro conteúdo, ou mesmo desobedeça as margens do papel.
Mais detalhes sobre o funcionamento no javadoc do método.
getWritableWidth & getWritableHeight
Ambos os métodos servem para retornar o espaço livre da folha, retornando respectivamente a largura (eixo X) e a altura (eixo Y). Este método leva em consideração apenas 2 coisas: O tamanho da folha em uso e as margens definidas. Este método não considera cabeçalhos, rodapés ou qualquer outro conteúdo já "impresso" no relatório.
getCoord*
Os métodos getCoord são responsáveis por calcular as coordenadas a partir dos limites "writable" do documento, sendo a origem (0,0) no canto superior esquerdo. Por exemplo, ao solicitar a posição 100 a partir da esquerda, o sistema calculará 100 + a borda da esquerda para achar o valor de x correto para ser usado no PDF. Dessa maneira facilita o posicionamento dos campos no espaço "writable".
Os métodos disponíveis são:
- getCoordFromTop(c) - Obtém a coordenada Y que representa a distância "c" em relação à borda superior do espaço "writable" do documento.
- getCoordFromBottom(c) - Obtém a coordenada Y que representa a distância "c" em relação à borda inferior do espaço "writable" do documento.
- getCoordFromRight(c) - Obtém a coordenada X que representa a distância "c" em relação à borda direita do espaço "writable" do documento.
- getCoordFromLeft(c) - Obtém a coordenada X que representa a distância "c" em relação à borda esquerda do espaço "writable" do documento.
- getCoordFromMiddleX(c) - Obtém a coordenada X que representa a distância "c" em relação ao centro da largura "writable" do documento.
![]() |
|
Além disso, os métodos automaticamente invertem as origens do documento conforme solicitado.
BISReportBean
O BISReportBean é um objeto que "carrega" todas as configurações necessárias para a geração do relatório. Ao invés de um construtor complexo com inúmeros atributos, optamos por receber este único objeto com todas as configurações necessárias internamente.
O BISReportBean tem alguns atributos usados no relatório, e todos os atributos já são instanciados com valores que definem o relatório, como por exemplo, que a folha é A4 no formato 'Retrato', e algumas margens padrões para impressão.
![]() |
|
É sugerido que os relatório sigam o mesmo padrão. Que recebam em seu construtor a mesma classe BISReportBean ou outro Bean específico para o relatório. Neste caso, também é sugerido que o Bean específico para o relatório estenda o BISReportBean. Desta forma um único objeto carregará todas as informações necessárias, tanto para o BISReport quando para a classe de Relatório.
Entre os atributos específicos de cada relatório podem estar o "MO" que o relatório usará para obter os dados no CRUD, ou mesmo a coleção de dados/objeto que ele deverá usar para montar o relatório. Sendo obviamente livre e de definição de cada relatório definir seus atributos e informações necessárias.
Executando um Relatório
Uma vez que o relatório foi implementado, gera-lo pode ser descrito em três passos básicos:
- instancie a classe do relatório (que estende e implementa os métodos abstratos da BISReport);
- chame o método writeReport();
- por fim, obtenha o arquivo do PDF através do método getOut();
Obviamente que há passos anteriores aos 3 citados acima, como por exemplo captar e definir eventuais configurações do relatório.
Referências
- ↑ Template no iText é um "pedaço" do documento que é escrito separado e depois posicionado onde desejado. Similar à ideia de escrever em um Post-It e depois cola-lo no seu documento, com a vantagem que não ficará visível onde esse template começa ou termina, ele não gera bordas ou fundos. Pelo menos não automáticamente.