DOMPDF y codificaciones utf-8

Algunas veces cuando generamos con dompdf un archivo a partir de un html si este contiene caracteres en castellano como acentos, etc; es muy posible que no se muestren partes del texto en el archivo generado, para corregir esto solo basta con utilizar la función de php utf8_encode de la siguiente manera:

$dompdf = new DOMPDF();
$dompdf->load_html(utf8_encode($htmlbuffer));
$dompdf->render();
$dompdf->stream("file.pdf");

No ocurre siempre que no se muestren todos los caracteres, es posible que una misma frase se muestre unas veces sí y otras no, es más bien un bug de esta clase en php pero de esta manera es muy sencillo corregirlo.

Comentarios

Daniel ha dicho que…
buen dia, estaba mirando las opciones que publicaste. pero la verdad no me funciona podrias decirme que otra opcion hay
Hola Daniel, hay muchas herramientas para generar PDFs con PHP, en este blog tengo algunas otras pero ahora mismo no recuerdo ninguna otra opción de esta clase en concreto.
Gracias por el comentario y ya siento no serte de mayor ayuda.
Aldo Ortega ha dicho que…
Por alguna razon, utf8_encode vuelve a codificar en utf8 caracteres ya procesados dando aun mas caracteres raros diferentes.

En algun proceso de codificacion los caracteres con acentos y otras cosas, fueron codificados y al codificarlos nuevamente falla.

recomiendo (a mi me soluciono el problema usar en vez de uft8_encode, usa su contraparte... utf8_decode, em mi script caracteres acetnuados ó y &oacute (codigos de HTML con &) los resolvio perfectamente al usar utf8_decode...
Reynier de la Rosa ha dicho que…
Hola Aldo, todo depende la codificación que tengas en origen y la que tenga de salida, en tu caso es posible que necesitara ISO en vez de UTF-8, es cuestión de ir probando y descartando.

Gracias por el comentario.
cc66 ha dicho que…
A mi me funciono fue con utf8_decode(). Por cierto he de decir que esta librería genera las tablas sin ningún tipo de error css, yo había usado era mpdf y pues los estilos no me los tomaba correctamente, probé dompdf y genero el pdf idéntico a la vista html. Se las recomiendo a todos.
ARMANDO ha dicho que…
Hola , GRACIAS POR PONER LA SOLUCIÓN YA HABÍA PROBADO CON VARIAS COSAS, POR QUE NO ME APARECÍAN LAS PALABRAS CON ACENTOS.
Cristian Basáez ha dicho que…
Me funcionó perfecto !!!! Muchas gracias por el aporte estimado.
Luis Gago Casas ha dicho que…
Ami me funciono así. utf8_decode(utf8_encode($codigoHTML))
¿hay algún problema de usarlo así?

//Code
$codigoHTML=utf8_decode(utf8_encode($codigoHTML));
$dompdf=new DOMPDF();
//$dompdf->set_paper("letter","landscape"); //hoja horizontal
$dompdf->load_html($codigoHTML);
$dompdf->render();
$dompdf->stream("archivo.pdf");
//Fin code
Reynier de la Rosa ha dicho que…
En principio utilizar utf8_decode(utf8_encode($codigoHTML)) es lo mismo que $codigoHTML.
Anónimo ha dicho que…
Excelente... me funcionó como explica Aldo Ortega.... GRACIAS!!!
Anónimo ha dicho que…
Mi solución utilizando Blade ha sido la siguiente:

$pageText = html_entity_decode("{!! $record->employee->getFullName() !!}");
Reynier de la Rosa ha dicho que…
No conozco Blade ¿qué es?