DOMPDF problem with Cyrillic characters

31,609

Solution 1

Problem is with fonts default dompdf uses (that is it doesn't have all unicode characters, whick are by now over 5000). Usually arialuni.ttf is what you need. You can download localized russian version at http://chernev.ru/dompdf.rar {broken link}

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

Solution 2

if you will use DejaVu font you can see cyrillic characters

The DejaVu TrueType fonts have been pre-installed to give dompdf decent Unicode character coverage by default. To use the DejaVu fonts reference the font in your stylesheet, e.g. body { font-family: DejaVu Sans; } (for DejaVu Sans).

DOMPDF include DejaVu font be default

    $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());

You can also set change def for font by default in dompdf_config.inc.php

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

Solution 3

In accepted answer link is broken and it contained old version of DOMPDF.

To work with unicode symbols in DOMPDF 0.6 you have two alternatives: use existed fonts or create your own font.

  • Use existed font (applied for DOMPDF 0.6):
  1. Download archive and extract.
  2. Copy extracted files in your dompdf fonts folder /dompdf/lib/fonts/.
  3. Edit dompdf_font_family_cache.dist.php with snippet 1.
  4. In CSS use 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'
),
/* ... */

  • If you want to use your own TTF font (say, Arial.ttf):
  1. Run: ttf2afm -o Arial.afm Arial.ttf. (I did it in Ubuntu.)
  2. Run: ttf2ufm -a -F Arial.ttf. (I did it in Windows using exe from UFPDF, but I guess you can use /dompdf/lib/ttf2ufm/bin/ttf2ufm.exe.)
  3. Copy Arial.* files in /dompdf/lib/fonts/.
  4. Add to dompdf_font_family_cache.dist.php snippet 2.
  5. In CSS use 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'
)
/* ... */
Share:
31,609

Related videos on Youtube

Anil Kumar R
Author by

Anil Kumar R

Updated on September 23, 2021

Comments

  • Anil Kumar R
    Anil Kumar R over 2 years

    I am using the DOMPDF library to create an invoice in PDF. This document can be in French, Russian or English, but I am having trouble printing Russian characters.

    First, I tried to use UTF-8 encoding and placed the meta tag in the head of the HTML page to be converted:

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

    But that didn't work.

    Then I inserted this meta tag inside the BODY tag, and it helped solve the problem with French characters.

    But Russian characters still don't work. I have also tried to convert Russian characters into HTML entities, but that too does not work.

    I use R&OS CPDF class, not PDFLib as a backend.

    Can anyone help?

    • raveren
      raveren almost 14 years
      why in the world is this community wiki? It's a concrete question with an excellent answer.
  • multitask landscape
    multitask landscape over 12 years
    Downvote because file size of Arialuni is 22 MB and when I want generate 1-page PDF it takes a long time and file size of PDF is big (in my case ~20 MB). When I generate 10-page PDF it takes a infinite processor time and actually cannot see the result. It is better to use lightweight fonts.
  • CGSmith105
    CGSmith105 over 8 years
    Updated link for others stumbling in: code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf