Jasper/Ireport

E aí pessoal,
Estou fazendo nota fiscal no Ireport, gostaria de saber como faço a quebra de paginas?
Na nota fiscal cabe, aproximadamente, 20 itens gostaria que ao ultrapassasse os 20 os demais itens fossem para outra pagina, nao tenho ideia como fazer.

Eu armazeno os itens em uma HashMap.

Obrigado pela atenção

Alguem?

Cara…

Se eu entendi bem basta que você coloque os campos que receberão os itens na aba detail e a paginação é automática.

Você faz questão que sejam 20 por página ou são quantas couberem?

Amigo, é o seguinte, os dados da relatorio não vem de uma select, por exemplo
eu jogo as variaveis em um HashMap e por sua vez encaminha para o jasper, o q estou kerendo fazer eh que ao acrescentar uma qntidade no corpo de itens q ultrapasse um certo valor q eu defini (20 itens) os poximos itens sejam carregados em outra pagina. Gostaria que o relatorio contivesse mais q uma pagina, se necessario.

vc tem que deixar o detail do tamanho necessario para a quebra com os 20 itens. No other way…:wink:

Tenta mexer nas configurações da página, aumentando a margem e diminuindo o espaço útil. Aí, na tentativa e erro, vai testando até que fiquem 20 por página…

Pelo que eu entendi, a paginação tá funcionando normal né?

Por exemplo, se você tem, no HashMap 160 itens, eles são dividídos (suposição) em 4 páginas com 40 itens cada… mas você quer 20, certo?

Não sei se é válido para a sua aplicação mas uma coisa interessante que já utilizei:

Pra exibição do relatório na tela, eu marcava o parâmetro IGNORE_PAGINATION como true e na tela apareciam, usando o exemplo dado, 160 itens na mesma página. Na hora de imprimir, eu gerava novamente o relatório, marcando o parâmetro citado como false e imprimia normal, em 4 folhas com 4 itens. É um “estilo” interessante e o cliente ficou satisfeito…

[quote=AdrianoPalm]Não sei se é válido para a sua aplicação mas uma coisa interessante que já utilizei:

Pra exibição do relatório na tela, eu marcava o parâmetro IGNORE_PAGINATION como true e na tela apareciam, usando o exemplo dado, 160 itens na mesma página. Na hora de imprimir, eu gerava novamente o relatório, marcando o parâmetro citado como false e imprimia normal, em 4 folhas com 4 itens. É um “estilo” interessante e o cliente ficou satisfeito…[/quote]

estou com um problema um pouco parecido, mas no meu caso não quero paginação quando eu exibo o relatório no formato HTML…pois ele vem igualzinho no PDF, deixando espaços qdo muda página.

esse parametro ae, IGNORE_PAGINATION, fica onde??? tem como postar um exemplo por favor?!

valeu

Opa… desculpe pela demora…

O parâmetro IGNORE_PAGINATION na verdade chama-se IS_IGNORE_PAGINATION…

É um parâmetro normal que pode ser modificado pela instância do HashMap, através do método put();

HashMap parametros = new HashMap();

parametros.put(JRParameter.IS_IGNORE_PAGINATION, false);

Pelo I-REPORT, você pode testá-lo indo ao menu EDITAR - PROPRIEDADES DO RELATÓRIO - ABA MORE…

Sobre o exemplo… basta você testar… pega um datasource com muitos itens… e coloque o parâmetro como TRUE e gere um relatório…

Abraços…

qualquer coisa… posta aí…

Opa… eu de novo, consegui resolver meu problema, ao invez de usar uma hashmap usei antes, uma ArrayList. Agora em outro relatorio preciso puxar os campos do Banco de Dados, aí tudo bem.

Segue o mesmo principio do outro, peguei os campos os itens e coloquei dentro da banda detail, porem quero especificar um tamanho para a banda, pois ela esta sendo preenchida, e chega ateh o final da pagina e pula p/ outra.

Gostaria que ela chegasse até um ponto e jogasse para outra pagina.
Limitar pela quantidade de itens, não serve pois às vezes a descrição é mais que uma linha. No caso devo limitar a banda Detail.

Alguem tem uma ideia?

Obrigado.

galera aproveitando o bonde, alguém sabe onde eu encontro uma boa documentação sobre o jasperReport ?

Alguem sabe limitar a banda detail, estou tentando mta coisa mas nd… já tentei aumentar a banda lastpage e nada.

eu nao cheguei a tentar, mas tenta ver se pela variável, naquele cantos Variables o Page-Count você consegue limitar por ele ou o columns count, acho que o columns e pela linha, mas tenta ai valeu! :roll:

E ai Darkryon
Me diz uma coisa você esta imprimindo estas notas fiscais do ireport em impressora matricial?
Tu usou algum recurso especial para elas serem impressas rapidamente ou esta imprimindo naquela lentidão que os
distemas baseados em windows imprime nas matriciais?
Se tiver alguma dica, ou alguem ai tiver, sobre isso me da um retorno.

Abraços

Para enviar para impressoras matriciais, importa o conteúdo do jasper para modo texto , gravando num arquivo txt. Depois transforma em um array de bytes e envia pra impressora através de um fileoutputStream que dá certo e fica rápido… o problema que estou tentando resolver é o posicionamento do texto…

E ai leopoldof, como faço isso? importat o contrudo do jasper par amodo texto? E como transformar em um array de bytes? E como mando para a impressora. fieuei meio que viajando agora.

Tu tens como me mandar um exemplo com codigo para mim dar uma olhada???

Agradeço desde já

Desculpe a demora para responder… mas lá no proprio ireport no menu criar, tem uma opção para visualizar texto, então quando executado o .jasper, ele vai gerar um arquivo.txt…depois faz uma rotina pra ler este arquivo texto tipo assim:



  FileOutputStream fo = null;
        File file = new File("C:/Users/leopoldof/Desktop/RelTeste.txt");//le o arquivo
    
        try {
            fo = new FileOutputStream("\\\\caminhoDaImpressora\\Epson");
              byte[] b = getBytesFromFile(file);
             fo.write(b);
            
        } catch (Exception ex) {
            Logger.getLogger(MainDiretoTexto.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                fo.close();
            } catch (IOException ex) {
                Logger.getLogger(MainDiretoTexto.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

A única coisa que não consegui ainda foi formatar adequadamente o texto gerado pelo jasper