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.
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.