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