Saltar al contenido

Problema DOMPDF con caracteres cirílicos

Al fin después de mucho batallar ya dimos con la respuesta de este conflicto que agunos lectores de nuestro sitio han tenido. Si tienes algún detalle que compartir puedes compartir tu información.

Solución:

En la respuesta aceptada, el enlace está roto y contenía una versión anterior de DOMPDF.

Para trabajar con símbolos Unicode en DOMPDF 0.6 tienes dos alternativas: usar fuentes existentes o crear tu propia fuente.

  • Usar fuente existente (aplicada para DOMPDF 0.6):

    1. Descargar archivo y extraer.
    2. Copie los archivos extraídos en su carpeta de fuentes dompdf /dompdf/lib/fonts/.
    3. Editar dompdf_font_family_cache.dist.php con fragmento 1.
    4. En uso de CSS font-family: times;.

Fragmento 1:

/* ... */
'times' => array (
    'normal' => DOMPDF_FONT_DIR . 'times',
    'bold' => DOMPDF_FONT_DIR . 'timesbd',
    'italic' => DOMPDF_FONT_DIR . 'timesi',
    'bold_italic' => DOMPDF_FONT_DIR . 'timesbi'
),
'times-roman' => array (
    'normal' => DOMPDF_FONT_DIR . 'times',
    'bold' => DOMPDF_FONT_DIR . 'timesbd',
    'italic' => DOMPDF_FONT_DIR . 'timesi',
    'bold_italic' => DOMPDF_FONT_DIR . 'timesbi'
),
/* ... */

  • Si desea utilizar su propia fuente TTF (por ejemplo, Arial.ttf):

    1. Correr: ttf2afm -o Arial.afm Arial.ttf. (Lo hice en Ubuntu).
    2. Correr: ttf2ufm -a -F Arial.ttf. (Lo hice en Windows usando exe de UFPDF, pero supongo que puedes usar /dompdf/lib/ttf2ufm/bin/ttf2ufm.exe.)
    3. Dupdo Arial.* archivos en /dompdf/lib/fonts/.
    4. añadir dompdf_font_family_cache.dist.php fragmento 2.
    5. En uso de CSS font-family: arial;.

Fragmento 2:

/* ... */
'arial' => array (
    'normal' => DOMPDF_FONT_DIR . 'Arial',
    'bold' => DOMPDF_FONT_DIR . 'Arial',
    'italic' => DOMPDF_FONT_DIR . 'Arial',
    'bold_italic' => DOMPDF_FONT_DIR . 'Arial'
)
/* ... */

si usa la fuente DejaVu, puede ver caracteres cirílicos

Las fuentes DejaVu TrueType se han preinstalado para dar a dompdf una cobertura decente de caracteres Unicode de forma predeterminada. Para usar las fuentes DejaVu, haga referencia a la fuente en su hoja de estilo, por ejemplo, body font-family: DejaVu Sans; (para Deja Vu Sans).

DOMPDF incluye la fuente DejaVu por defecto

    $html = "".
        "А вот и кириллица".
        "";

    $dompdf = new DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    echo file_put_contents('cyrillic.pdf', $dompdf->output());

También puede configurar el cambio definitivamente para fuente por defecto en dompdf_config.inc.php

def("DOMPDF_DEFAULT_FONT", "DejaVu Sans");

El problema es con las fuentes que usa dompdf por defecto (es decir, no tiene todos los caracteres Unicode, que ahora tienen más de 5000). Por lo general, arialuni.ttf es lo que necesita. Puede descargar la versión rusa localizada en http://chernev.ru/dompdf.rar enlace roto

Enlace actualizado: https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf

Puntuaciones y comentarios

Si posees alguna cuestión y disposición de limar nuestro artículo puedes ejecutar una referencia y con placer lo observaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *