Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 472

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 487

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 494

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 530

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 611

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 728

Strict Standards: Redefining already defined constructor for class wpdb in /home/controlz/public_html/blog/wp-includes/wp-db.php on line 306

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/cache.php on line 103

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/controlz/public_html/blog/wp-includes/cache.php on line 425

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/theme.php on line 623

Strict Standards: Redefining already defined constructor for class WP_Dependencies in /home/controlz/public_html/blog/wp-includes/class.wp-dependencies.php on line 15

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/controlz/public_html/blog/wp-settings.php:472) in /home/controlz/public_html/blog/wp-content/plugins/si-captcha-for-wordpress/si-captcha.php on line 31

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/controlz/public_html/blog/wp-settings.php:472) in /home/controlz/public_html/blog/wp-content/plugins/si-captcha-for-wordpress/si-captcha.php on line 31

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method GoogleSitemapGeneratorLoader::Enable() should not be called statically in /home/controlz/public_html/blog/wp-includes/plugin.php on line 311
Page-break-before | formatic.cat

Entradas con la etiqueta ‘page-break-before’

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));