convertir bootstrap php codeigniter pdf dompdf

php - bootstrap - cómo convertir múltiples archivos html con Dompdf?



dompdf laravel (2)

Qué estoy haciendo:

Estoy usando una biblioteca PHP llamada Dompdf para convertir mi archivo HTML a PDF. He convertido con éxito un solo archivo HTML a PDF.

Lo que estoy tratando de hacer:

Ahora que tengo varios informes, quiero convertirlos a un archivo PDF.

Qué estoy haciendo:

Tengo un ejemplo aquí en el que obtengo un formulario de la base de datos y otro directamente desde la vista.

Código:

$result[''patients''] = $this->reports_model->get_xray_reports($id); // getting form from database require_once "dompdf/dompdf_config.inc.php"; // include dompdf $dompdf = new DOMPDF(); $dompdf->set_paper("A4"); $html = $this->load->view(''wilcare/form_set_page_15'',"",true);// loading direct from view //this file is not converting $html = $this->load->view(''wilcare/report1'',$result,true);//loading from db $dompdf->load_html($html) $dompdf->render(); $dompdf->stream("hello.pdf",array(''Attachment''=>0));

Problema

Solo está convirtiendo un archivo.

También he intentado esto:

$html = $this->load->view(''wilcare/form_set_page_15'',"",true); $html1 = $this->load->view(''wilcare/report1'',$result,true); $dompdf->load_html($html && $html1);


Desea crear en un archivo PDF desde dos archivos HTML con DOMPDF.

Esto no es posible. DOMPDF admite la creación de un archivo PDF a partir de un documento HTML.

Internamente DOMPDF usa DOMDocument para representar el documento HTML. Entonces, si quiere poner dos archivos HTML en DOMPDF, primero debe fusionarlos.

Comportamiento de fusión HTML DOMPDF

Las pruebas revelaron que se pueden concatenar secciones de mutlicple <head>...</head><body>...</body> (cada uno de estos pares iniciará una nueva página en DOMPDF) pero deben estar dentro del mismo <html> elemento del documento (DOMPDF v0.6.1).

Si fusiona elementos dentro del elemento <body> , se crea una sola página.

Si agrega varios documentos <html> tras otro (como lo sugiere Simo), el único documento que se coloca en el PDF es el único.

Agrego dos ejemplos de PHP:

  1. El primero muestra cómo fusionar dos documentos HTML en un solo cuerpo que DOMPDF representa en una página ( PDF )
  2. El segundo muestra cómo fusionarlos en los dos <head>...</head><body>...</body> que DOMPDF representa como dos páginas ( PDF )

Código de ejemplo de PHP Documento HTML que fusiona el cuerpo único DOMPDF

Por ejemplo, desea agregar el contenido del cuerpo del segundo documento HTML al final del cuerpo del primero (todos los objetos del tipo DOMDocument ). :

$doc1 = create_document(1); $doc2 = create_document(2); $doc1Body = $doc1->getElementsByTagName(''body'')->item(0); $doc2Body = $doc2->getElementsByTagName(''body'')->item(0); foreach ($doc2Body->childNodes as $child) { $import = $doc1->importNode($child, true); if ($import) { $doc1Body->appendChild($import); } } $doc1->saveHTMLFile(''php://output'');

Ejemplar HTML de salida ( de este completo código de ejemplo ):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Document 1</title> </head> <body> <h1>Document 1</h1> <p>Paragraph 1.1</p> <p>Paragraph 1.2</p> <h1>Document 2</h1> <p>Paragraph 2.1</p> <p>Paragraph 2.2</p> </body> </html>

Crea este PDF: http://tinyurl.com/nrv78br (una página)

Código de ejemplo de PHP Documento HTML que combina varias páginas de DOMPDF

Aquí el ejemplo con una página nueva en el segundo documento HTML:

foreach ($doc2->documentElement->childNodes as $child) { $import = $doc1->importNode($child, true); if ($import) { $doc1->documentElement->appendChild($import); } } $html = $doc1->saveHTML();

Ejemplar HTML de salida:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Document 1</title></head><body> <h1>Document 1</h1> <p>Paragraph 1.1</p> <p>Paragraph 1.2</p> </body><head><title>Document 2</title></head><body> <h1>Document 2</h1> <p>Paragraph 2.1</p> <p>Paragraph 2.2</p> </body></html>

Crea este PDF: http://tinyurl.com/oe4odmy (dos páginas)

Dependiendo de lo que necesite con sus documentos, es posible que necesite realizar pasos adicionales, como fusionar el título y las reglas de CSS (que con suerte son portátiles).


Necesita fusionar los dos archivos:

//this file is not converting $html .= $this->load->view(''wilcare/report1'',$result,true);