Якщо ви використовуєте плагін 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
Чудово! 
Помилка!