Me doy cuenta de que esta pregunta se ha hecho antes (miré todas las soluciones y las intenté todas) pero aún estoy intentando generar un documento en PDF con un encabezado y pie de página eso repite en cada página.Generando encabezado/pie de página con platillo volante (xHTMLRenderer) e iText
Estoy usando flying saucer
R8 con iText2.0.8
He intentado muchos métodos diferentes para que funcione pero hasta ahora no ha tenido éxito. Algunos métodos que probé fueron https://gist.github.com/626264, usando elementos en ejecución y recuadros de márgenes http://pigeonholdings.com/projects/flyingsaucer/R8/doc/guide/users-guide-R8.html#xil_40 (función css3), una guía para el platillo volador r7 que no funciona para r8 http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html#page-specific-features, un largo con muchos otros métodos que no me funcionaron.
Mi encabezado div
contiene otros 2 divs con imágenes y mi pie de página es solo para la numeración de páginas. El html se está poniendo en un StringBuffer
llamado buf.
buf.append("<head>");
buf.append("<title>blabla</title> ");
buf.append("<style type='text/css' media='print'> ");
buf.append("@page { size:8.5in 11in; padding:1em; @bottom-left { content: element(footer); } } ");
buf.append("#footer { font-size: 90%; font-style: italic; position: running(footer); top: 0; left: 0; }");
buf.append("#pagenumber:before { content: counter(page); } ");
buf.append("#pagecount:before { content: counter(pages); } ");
buf.append("</style></head>");
buf.append("<body>");
buf.append("<div class='header' style='clear:both;'>");
buf.append("<div id='moneyLogo' style='float:left'>");
buf.append("<img src='logo.jpg' alt='Some alt text' />");
buf.append("</div>");
buf.append("<div id='canLogo' style='float:right'>");
buf.append("<img src='someImg.gif' alt='alt text' />");
buf.append("</div>");
buf.append("<h3 style='text-align:center; clear:both;'>alt text</h3>");
buf.append("<div style='text-align:center;'>");
buf.append("Some texy text");
buf.append("<br />"););
buf.append("</div>");
buf.append("</div><br /><br />");
buf.append("<div id='footer'> Page <span id='pagenumber'/> of <span id='pagecount'/> </div>");
buf.append("</body>");
buf.append("</html>");
Mi pdf genera bien, excepto por el hecho de que la cabecera sólo aparece en la primera página y el pie de página sólo aparece en la parte inferior de la última página. Cuando puse el html a través del validador w3c, salió bien, pero cuando usé su validador CSS dijo que habían errores en la línea @page { size:8.5in 11in; padding:1em; @bottom-left { content: element(footer); } }
Por lo que pude ver en todas las guías, estaba leyendo esto estuvo bien. También escuché que el validador de W3C CSS estaba incompleto para las especificaciones de CSS3, así que supuse que era el validador el que estaba equivocado.
Si alguien me podría dar algunos consejos de dónde buscar o las ideas que harían que mi semana :)
P. S. Tiene que utilizar Platillo volante R8 y/o iText 2.0.8
Dejar un comentario para futuros usuarios: Si el pie de página no se está ejecutando en todas las páginas de flyingsaucer, asegúrese de que el elemento de pie de página sea ANTES del contenido que a diferencia de las páginas HTML normales. Puede ver los ejemplos a continuación por @Giovanni que muestra que el encabezado y el pie de página son anteriores al contenido. Su código es correcto, es solo que el encabezado y el pie de página deben colocarse antes del contenido y es muy contrario a la intuición –