Entradas con la etiqueta ‘dompdf’

DOMPDF - Problemas con el salto de línea

Miércoles, 26 de Noviembre de 2008

¿Qué es DOMPDF?

dompdf es una librería que permite convertir HTML a PDF, desarrollada en PHP5, leerá hojas de estilo externas, estilos en etiquetas y soporta la mayoría de los atributos HTML.

El tratamiento de PDF se hace mediante PDFLib, por lo que es necesaria la extension PDFLib de PECL, la cual mejora el rendimiento y reduce el gasto de memoria.

Admite la mayoría de las propiedades y selectores CSS2.1 y los atributos HTML 4.0. Además permite tablas complejas, imágenes PNG, GIF y JPEG, y enlaces, entre otras cosas.

Aún faltan algunos detalles como listas ordenadas, posicionamiento absoluto y relativo, y cuando el fichero tiene demasiado tamaño se toma un tiempo excesivo en generar el PDF.

dompdf

Problema

Quiero concatenar dos salidas de pagina html en un solo PDF.

ob_start();

//aquí el contenido de la página 1

$buffer1 = ob_get_contents();

//aquí el contenido de la página 2

$buffer2 = ob_get_contents();

ob_end_clean();

El problema que me he encontrado es que no hace un auto-salto de linea al detectar la etiqueta <html> ni nada por el estilo, además que da errores al concatenar dos documentos cuando el primero esta ‘cerrado’(</html>).

Primero de todo, borramos el </body> y el </html> de la primera salida de contenidos (sino salta error y no genera el pdf) y en su lugar ponemos:

<div style=”page-break-after: always;”></div>

¿Que es page-break-after/page-break-before?

page-break-after y page-break-before son propiedades de estilos CSS que se aplican a la hora de imprimir páginas web en la impresora, para forzar saltos de página después o antes de ciertos elementos.

Ahora ya podemos generar un documento PDF a partir de los PDF que queramos por separado, ya que solventamos el lio que se hace el dompdf con ‘</html> y posteriormente <html>’ y ademas cuando acaba un documento, deja el espacio de la hoja que resta, y continua en la siguiente.

$dompdf = new DOMPDF();
$dompdf->load_html($buffer1.$buffer2);
$dompdf->render();
$dompdf->stream(”Pdf/temporales/verfactura.pdf”,array(”Attachment” => 1));