39 votos

FPDF codificación utf-8 (CÓMO HACERLO)

¿Alguien sabe cómo configurar la codificación en el paquete FPDF a UTF-8? ¿O al menos a ISO-8859-7 (griego) que admita caracteres griegos?

Básicamente quiero crear un archivo PDF que contenga caracteres griegos.

Cualquier sugerencia sería de ayuda. George

52voto

Michal Puntos 1589

No utilice codificación UTF-8. Las fuentes estándar de FPDF utilizan ISO-8859-1 o Windows-1252. Es posible realizar una conversión a ISO-8859-1 con utf8_decode(): $str = utf8_decode($str); Pero algunos caracteres como el Euro no se traducirán correctamente. Si la extensión iconv está disponible, la forma correcta de hacerlo es la siguiente: $str = iconv('UTF-8', 'windows-1252', $str);

8voto

schnikow Puntos 634

Necesitas generar primero una fuente. Debes utilizar la utilidad MakeFont incluida en el paquete FPDF. En Linux utilicé un script un poco extendido del demo:

Luego copié los archivos generados al directorio de font en mi web y utilicé esto:

$pdf->Cell(80,70, iconv('UTF-8', 'ISO-8859-2', 'Buňka jedna'),1);

(Estaba trabajando en una tabla.) Eso funcionó para mi idioma (Buňka jedna es checo para Cell one). El idioma checo pertenece a los idiomas de Europa central, también ISO-8859-2. Lamentablemente el usuario de FPDF está obligado a perder las ventajas de la codificación UTF-8. No puedes obtener esto en tu PDF:

Městečko Fruens Bøge

La letra danesa ø se convierte en ř en ISO-8859-2.

Sugerencia de solución: Necesitas obtener una fuente griega, generar la fuente usando la codificación adecuada (ISO-8859-7) y usar iconv con la misma codificación de destino que la que se ha generado con la fuente.

6voto

Daan Puntos 335

Hay una solución realmente simple para este problema.

En el archivo fpdf.php, ve a la línea que dice:

if($txt!=='')
{

Es la línea 648 en mi versión de fpdf. Inserta la siguiente línea de código:

$txt = iconv('utf-8', 'cp1252', $txt);

(arriba de la línea de código)

if($align=='R')

Esto funciona para todos los caracteres especiales en alemán y también debería funcionar para los caracteres especiales en griego. De lo contrario, simplemente reemplaza cp1252 con el alfabeto respectivo que necesitas. Puedes ver todos los caracteres admitidos aquí: http://en.wikipedia.org/wiki/Windows-1252

Vi la solución aquí: http://fudforum.org/forum/index.php?t=msg&goto=167345 Por favor, utiliza mi ejemplo de código anterior, ya que el autor original se olvidó de insertar un guion entre utf y 8.

Espero que lo anterior haya sido útil.

Daan

3voto

Jon Winstanley Puntos 11280

Hay una extensión de FPDF llamada mPDF que permite utilizar fuentes Unicode.

http://www.mpdf1.com/mpdf/index.php

1voto

Joel Small Puntos 107

Esta respuesta no funcionó para mí, también necesitaba ejecutar un descodificación HTML en la cadena. Ver

iconv('UTF-8', 'windows-1252', html_entity_decode($str));

Créditos para emfi de html_entity_decode in FPDF(using tFPDF extention)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X