Boa tarde a todos, estou querendo forçar uma quebra de página no meu relatório. Se uma condição da minha classe Java for true realiza a quebra, caso contrário não realiza e continua a imprimir o relatório.
Estou usando IReport + Jasper.
Alguém tem alguma dica?
Já procurei aqui no guj mas não achei resposta pra isso.
Abraços.
no agrupamento ( grupos ) tem a opção de a cada grupo ser inserido em uma nova página, acredito que isso ajude você!
Hmm, ok Sudeval. Mto obrigado pela dica.
Olá, no meu caso preciso quebrar a página após tantas linhas (ex.: 20) serem impressas. Como posso fazer para forçar esta quebra
eu estou usando ITextRenderer.
para a quebra de página fiz o seguinte. Todas as tags dentro de BODY precisam ter uma class de estilos. Na folha de estilo deve ter height, margin-top, margin-bottom border-width-top e todas as outras de dimensão.
dai, quando vem o resultado de XSLT+XML, eu abro este arquivo via org.w3c.Document. e para cada Node vou somando o custo das tags. quando o custo é maior que 297 (a4) eu adiciono uma tag indicada com style de quebra de pagina.
for(i=0;i<len;i++){
if((node=nodes.item(i)).getNodeType()!=1)continue;
if((element=(Element)node)==footer)continue;
/*-------------------------------------------------
QUEBRA FORCADA class=quebra
--------------------------------------------------*/
if(element.getAttribute("class").equalsIgnoreCase("quebra")){
rodapes.add(quebra=(Element)body.insertBefore(footer.cloneNode(true),element));
t=(int)((sizeHeight-(custoRodape+marginBottom+marginTop+total))/0.264583333f);
if(t><0)t=0;
quebra.setAttribute("style","display:;margin-top:"+(t)+"px;");
total=0;
body.removeChild(element);
continue;
}
/*-------------------------------------------------
VERIFICA CUSTO TOTAL
--------------------------------------------------*/
custo=tagCoust.getCoust(element);
if(custo+total>=(sizeHeight-(custoRodape+marginBottom+marginTop))){
rodapes.add(element=(Element)body.insertBefore(footer.cloneNode(true),element));
t=(int)((sizeHeight-(custoRodape+marginBottom+marginTop+total))/0.264583333f);
if(t<0)t=0;
element.setAttribute("style","display:;margin-top:"+(t)+"px;");
i++;
total=0;
}
total+=custo;
}
/*-------------------------------------------------
ADICIONA ULTIMO RODAPE
--------------------------------------------------*/
rodapes.add(element=(Element)body.appendChild(footer.cloneNode(true)));
t=(int)((sizeHeight-(custoRodape+marginBottom+marginTop+total))/0.264583333f);
if(t<0)t=0;
element.setAttribute("style","page-break-after:;display:;margin-top:"+(t)+"px;");
Para casa elemento que quebra, adiciono numa lista. depois para cada um, coloco a pagina
i=0;
for(Element rodape:rodapes){
getElementById(rodape,"rodapePagina").setTextContent("Pagina "+(++i)+" de "+rodapes.size());
}
no final disso, passo o document (nao pode salvar como arquivo) para o itext.