Aunque un pdf puede ser más adecuado, lo cierto también es que es una monserga crearlos, al menos con herramientas como el fpdf. En algunas ocasiones puede bastar un uso adecuado de las hojas de estilo.
Digamos que generas el reporte en HTML y lo presentas en una página que, además, tiene otros elementos. Lógicamente, estos elementos extras no deseas que se impriman. Pues bien, esto lo puedes lograr incluyendo una hoja de estilo específica para la impresión:
Código:
<html>
<head>
<title>Reporte</title>
<link rel='stylesheet' type='text/css' href='impresion.css' media='print'>
<body>
...
<input type='button' name='btnImprimir' id='btnImprimir' onclick='window.print();' value='Imprimir'>
</body>
</html>
En dicha hoja ocultas los elementos que no desees imprimir. Por ejemplo, en el código anterior, está el botón para mandar imprimir, y no queremos que éste se imprima. Bastará ocultarlo así en la hoja de estilo de impresión:
imprimir.css
Código:
input#imprimir
{
display: none;
}
Puedes ocultar cualquier elemento, incluso un <div>, de manera que puedes ocultar porciones completas de la página que estén dentro de un <div>.
Las hojas de estilo de impresión te sirven, además, para otro tipo de formatos específicos para la impresión. Por ejemplo; una tabla, vista en el navegador, quizá ajustes sus columnas de manera proporcional de manera que abarque el ancho de la pantalla. Esto no siempre queda correcto al imprimir, por lo que es mejor dar medidas absolutas en pulgadas.
Otra cosa. Algo que puede ser muy útil es hacer uso del atributo page-break-after. Si un reporte es muy largo, puedes programarlo (desde el script del lado del servidor) para que cada tantas filas, la etiqueta <tr> lleve este atributo con el valor 'always'. Esto hará que la impresión cambie a una nueva página.
// Saludos