Если вы используете плагин PDF Invoices & Packing Slips for WooCommerce для создания счетов-фактур, вы можете заметить, что некоторые символы валют — такие как ₴, ₸, ₺, ₽, € и другие — отображаются в виде пустых квадратов или знаков вопроса в сгенерированных PDF-файлах.

🔍 Почему это происходит?

Библиотеки генерации PDF (DomPDF и mPDF, обе используются этим плагином) зависят от шрифтов, встроенных в PDF. Шрифт по умолчанию, используемый этими библиотеками, не включает глифы для многих международных символов валют. В результате эти символы просто не могут быть отображены и выглядят некорректно.

Решение заключается в том, чтобы заставить PDF-движок использовать DejaVu Sans — шрифт с широким охватом Unicode, который включает практически все символы валют, используемые по всему миру.


✅ Решение

Добавьте следующий код в файл functions.php вашей темы или в плагин, специфичный для сайта.

Шаг 1: Добавьте код

// Исправление символов валют в PDF-счетах (PDF Invoices & Packing Slips for WooCommerce).
// Принудительное использование шрифта DejaVu Sans, который имеет полный охват символов валют Unicode.

add_action('wpo_wcpdf_before_document', function() {
    echo '<style>body, * { font-family: dejavu sans, sans-serif !important; }</style>';
});

add_filter('wpo_wcpdf_dompdf_options', function($options) {
    $options['defaultFont'] = 'DejaVuSans';
    return $options;
});

add_filter('wpo_wcpdf_mpdf_font_data', function($font_data) {
    $font_data['dejavusans'] = [
        'R'  => 'DejaVuSans.ttf',
        'B'  => 'DejaVuSans-Bold.ttf',
        'I'  => 'DejaVuSans-Oblique.ttf',
        'BI' => 'DejaVuSans-BoldOblique.ttf',
    ];
    return $font_data;
});

Шаг 2: Загрузите файлы шрифта DejaVu Sans

Файлы шрифта должны быть доступны на вашем сервере. Скачайте DejaVu Sans (бесплатный, с открытым исходным кодом) и загрузите следующие четыре файла на ваш сервер — например, в папку вашей темы или в специальный каталог шрифтов:

DejaVuSans.ttf
DejaVuSans-Bold.ttf
DejaVuSans-Oblique.ttf
DejaVuSans-BoldOblique.ttf

💡 Где получить шрифт: Скачайте с dejavu-fonts.github.io — он полностью бесплатный и с открытым исходным кодом.

💡 Примечание по mPDF: Если вы используете mPDF в качестве вашего PDF-движка, обновите пути к файлам в фильтре wpo_wcpdf_mpdf_font_data, чтобы они соответствовали фактическому расположению файлов шрифта на вашем сервере.


🔧 Какой PDF-движок вы используете?

Плагин поддерживает два движка рендеринга PDF:

Движок Применяемый хук
DomPDF (по умолчанию) wpo_wcpdf_dompdf_options + wpo_wcpdf_before_document
mPDF wpo_wcpdf_mpdf_font_data + wpo_wcpdf_before_document

Код выше охватывает оба движка — вы можете безопасно добавить все три хука, независимо от того, какой движок активен.


✅ Символы, исправленные этим решением

После применения исправления следующие символы валют (и многие другие) будут корректно отображаться в ваших PDF-счетах:

Символ Валюта
Украинская гривна
Казахстанский тенге
Турецкая лира
Российский рубль
Евро
£ Британский фунт
¥ Японская иена / Китайский юань
Южнокорейская вона
Вьетнамский донг

⚠️ Важные примечания

  • Это исправление применяется только к PDF-файлам, созданным с помощью PDF Invoices & Packing Slips for WooCommerce
  • Оно не влияет на внешний вид вашего фронтенда WooCommerce
  • Если вы переключите PDF-движки в настройках плагина, исправление продолжит работать — все три хука охвачены
  • После добавления кода, перегенерируйте существующий счет, чтобы подтвердить, что символы теперь отображаются корректно
0
Благодарим! 
Ошибка!