Estou usando msm ideia de geração de pdfs em meu projeto:
Continuando a discussão do Converta HTML para PDF com 06 linhas de Código:
Porém ao criar a tabela de forma dinamina, ao imprimir, ele a quebra, ficando o layout mto feio! Já tentei n soluções, e estou aqui quebrando a cabeça ainda, alguém já tentou e funcionou?
Tentei a solução abaixo, mas ele traz uma tabela para cada registro trazido do List.
Continuando a discussão do [Converta HTML para PDF com 06 linhas de Código]
(Converta HTML para PDF com 06 linhas de Código):
No meu html:
@media print {
table { page-break-inside: always; }
thead { display:table-header-group }
tfoot { display:table-footer-group }
}
<table>
<thead>
<tr>
<th>$messages.get(‘situacao.label’)
<th>$messages.get(‘data.label’)
<th>$messages.get(‘paciente.label’)
<th>$messages.get(‘cpf.label’)
<th>$messages.get(‘formaPagamento.label’)
<th>$messages.get(‘valor.label’)
</tr>
</thead>
<tfoot>
<tr>
<th colspan=“6”>RODAPÉ
</tr>
</tfoot>
<tbody>
#foreach($extrato in $extratoList)
<tr>
<td>$messages.get($extrato.situacaoDecoder)
<td>$format.date($extrato.dataVencimento , “dd/MM/yyyy”)
<td>$extrato.pacienteOrigem.nome
<td>$!extrato.pacienteOrigem.cpf
<td>$extrato.formaPagamento.nome
<td>$format.currency($!extrato.valorLiquido)
</tr>
#end
</tbody>
Se eu fizer o html e mandar imprimir via browser ele funciona, mas se gerar o pdf, ele traz tudo bagunçado, sem obedecer o cabeçalho e tabela quebrada.
tbm tentei forçar no PDFCreator
public static byte[] geraPdf(String htmlContent, double marginRight, double marginLeft, double marginTop, double marginBottom) {
StringBuilder html = new StringBuilder();
html.append("\n<header>");
html.append("\n <style type='text/css'>");
html.append("\n @page {");
html.append("\n size: A4;");
html.append("\n margin-right: " + marginRight + ";");
html.append("\n margin-left: " + marginLeft + ";");
html.append("\n margin-top: " + marginTop + ";");
html.append("\n margin-bottom: " + marginBottom + ";");
html.append("\n -fs-flow-top: \"header\";");
html.append("\n -fs-flow-bottom: \"footer\";");
html.append("\n -fs-flow-left: \"left\";");
html.append("\n -fs-flow-right: \"right\";");
html.append("\n padding: 0;");
html.append("\n }");
html.append("\n @media print {");
html.append("\n table { page-break-inside: always; } ");
html.append("\n thead { display:table-header-group }");
html.append("\n tfoot { display:table-footer-group }");
html.append("\n }");
html.append("\n </style>");
html.append("\n</header>");
html.append("\n");
Alguma luz?!?!?!?
Tati