Если вы используете плагин 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-движки в настройках плагина, исправление продолжит работать — все три хука охвачены
- После добавления кода, перегенерируйте существующий счет, чтобы подтвердить, что символы теперь отображаются корректно