2009-06-13 10 views
10

Sto utilizzando la libreria DOMPDF per creare una fattura in PDF. Questo documento può essere in francese, russo o inglese, ma sto riscontrando problemi con la stampa di caratteri russi.Problema DOMPDF con caratteri cirillici

In primo luogo, ho cercato di usare codifica UTF-8 e collocato il tag meta nella testa della pagina HTML da convertire:

< meta http-equiv = contenuto "Content-Type" =" text/html; charset = utf-8 "/ >

Ma questo non ha funzionato.

Quindi ho inserito questo tag meta all'interno del tag BODY e ha aiutato a risolvere il problema con i caratteri francesi.

Ma i caratteri russi continuano a non funzionare. Ho anche provato a convertire i caratteri russi in entità HTML, ma anche questo non funziona.

Uso la classe CPDF OS R &, non PDFLib come back-end.

Qualcuno può aiutare?

+0

Se vuoi che la tua domanda abbia maggiore attenzione, ti preghiamo di aggiornarla con nuove informazioni. Non pubblicare duplicati esatti. –

+0

OK, grazie per la nota. –

+1

perché nel mondo c'è questa wiki della comunità? È una domanda concreta con una risposta eccellente. – raveren

risposta

7

Il problema è relativo all'uso predefinito di dompdf dei caratteri (ovvero non ha tutti i caratteri Unicode, che sono ormai oltre 5000). Solitamente arialuni.ttf è ciò di cui hai bisogno. È possibile scaricare la versione localizzata in russo http://chernev.ru/dompdf.rar {link rotto}

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

+0

Grazie per la risposta. –

+1

Il collegamento è interrotto – Bulat

+1

Il collegamento non funziona. – Sadikhasan

0

Scarica ARIALUNI.TTF eseguire PHP load_font.php ARIALUNI.TTF 'Arial' nella directory dompdf, font arial impostato E ' funziona;)

+1

Downvote perché la dimensione del file di Arialuni è 22 MB e quando voglio generare PDF di 1 pagina ci vuole molto tempo e le dimensioni del file PDF sono grandi (nel mio caso ~ 20 MB). Quando si genera un PDF di 10 pagine, è necessario un tempo di elaborazione infinito e in realtà non è possibile visualizzare il risultato. È meglio usare caratteri leggeri. –

7

Nel link di risposta accettato è danneggiato e conteneva la vecchia versione di DOMPDF.

Per lavorare con i simboli unicode in DOMPDF 0.6 avete due alternative: usate i caratteri esistenti o create il vostro font personale.

  • Usa esisteva carattere (richiesto dompdf 0.6):

    1. Download archivio ed estratto.
    2. Copia i file estratti nella cartella dei font dompdf /dompdf/lib/fonts/.
    3. Modificare dompdf_font_family_cache.dist.php con frammento 1.
    4. In CSS utilizzare font-family: times;.

Snippet 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' 
), 
/* ... */ 

  • Se si desidera utilizzare il proprio carattere TTF (diciamo, Arial.ttf):

    1. Run: ttf2afm -o Arial.afm Arial.ttf. (L'ho fatto in Ubuntu.)
    2. Corsa: ttf2ufm -a -F Arial.ttf. (L'ho fatto in Windows usando exe da UFPDF, ma suppongo che tu possa usare /dompdf/lib/ttf2ufm/bin/ttf2ufm.exe.)
    3. Copia Arial.* file in /dompdf/lib/fonts/.
    4. Aggiungi a dompdf_font_family_cache.dist.php snippet 2.
    5. In CSS utilizzare font-family: arial;.

Snippet 2:

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

Per me i 4 passaggi di cui sopra non hanno risolto il problema. Oltre a questo, dompdf converte il creato pdf a ANSI (ISO) È necessario disattivare questa nella pagina delle opzioni http://domain.com/admin/settings/print/pdf

Tick modalità Unicode la casella Usa del dompdf. Questo costringerà a creare file in UTF-8/Unicode.

Si noti che le impostazioni Web sovrascrivono le impostazioni in dompdf_config.inc.php per impostazione predefinita.

4

se si utilizzerà carattere DejaVu è possibile vedere i caratteri cirillici

I font DejaVu TrueType sono stati pre-installato per dare dompdf copertura di caratteri Unicode decente per impostazione predefinita. Per utilizzare i font DejaVu, fai riferimento al carattere nel tuo foglio di stile, ad es. body {font-family: DejaVu Sans; } (per DejaVu Sans).

dompdf includono carattere DejaVu essere predefinito

$html = "<html><head><style>body { font-family: DejaVu Sans }</style>". 
     "<body>А вот и кириллица</body>". 
     "</head></html>"; 

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

È anche possibile impostare il cambiamento def per carattere di default in dompdf_config.inc.php

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

notato che problema potrebbe essere in uso css-reset, in particolare font:inherit;

Problemi correlati