Jeśli używasz wtyczki PDF Invoices & Packing Slips for WooCommerce do generowania faktur zamówień, możesz zauważyć, że niektóre symbole walut — takie jak ₴, ₸, ₺, ₽, € i inne — pojawiają się jako puste pola lub znaki zapytania w generowanych plikach PDF.
🔍 Dlaczego tak się dzieje?
Biblioteki generujące PDF (DomPDF i mPDF, obie używane przez tę wtyczkę) polegają na czcionkach osadzonych w PDF. Domyślna czcionka używana przez te biblioteki nie zawiera glifów dla wielu międzynarodowych symboli walut. W rezultacie te znaki po prostu nie mogą być renderowane i pojawiają się jako uszkodzone.
Rozwiązaniem jest wymuszenie użycia przez silnik PDF czcionki DejaVu Sans — czcionki z szerokim pokryciem Unicode, która zawiera praktycznie wszystkie symbole walut używane na całym świecie.
✅ Rozwiązanie
Dodaj poniższy kod do pliku functions.php twojego motywu lub do wtyczki specyficznej dla witryny.
Krok 1: Dodaj kod
// Napraw symbole walut w fakturach PDF (PDF Invoices & Packing Slips for WooCommerce).
// Wymusza użycie czcionki DejaVu Sans, która ma pełne pokrycie symboli walut 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;
});
Krok 2: Prześlij pliki czcionki DejaVu Sans
Pliki czcionek muszą być dostępne na twoim serwerze. Pobierz DejaVu Sans (darmowa, open source) i prześlij poniższe cztery pliki na swój serwer — na przykład do folderu motywu lub dedykowanego katalogu czcionek:
DejaVuSans.ttf
DejaVuSans-Bold.ttf
DejaVuSans-Oblique.ttf
DejaVuSans-BoldOblique.ttf
💡 Skąd pobrać czcionkę: Pobierz z dejavu-fonts.github.io — jest całkowicie darmowa i open source.
💡 Uwaga dotycząca mPDF: Jeśli używasz mPDF jako swojego silnika PDF, zaktualizuj ścieżki plików w filtrze wpo_wcpdf_mpdf_font_data, aby pasowały do rzeczywistej lokalizacji plików czcionek na twoim serwerze.
🔧 Którego silnika PDF używasz?
Wtyczka obsługuje dwa silniki renderujące PDF:
| Silnik | Hook, który się stosuje |
|---|---|
| DomPDF (domyślny) | wpo_wcpdf_dompdf_options + wpo_wcpdf_before_document |
| mPDF | wpo_wcpdf_mpdf_font_data + wpo_wcpdf_before_document |
Powyższy kod obejmuje oba silniki — możesz bezpiecznie dodać wszystkie trzy hooki, niezależnie od tego, który silnik jest aktywny.
✅ Symbole naprawione przez to rozwiązanie
Po zastosowaniu poprawki, następujące symbole walut (i wiele innych) będą poprawnie renderowane w twoich fakturach PDF:
| Symbol | Waluta |
|---|---|
| ₴ | Hrywna ukraińska |
| ₸ | Tenge kazachskie |
| ₺ | Lira turecka |
| ₽ | Rubel rosyjski |
| € | Euro |
| £ | Funt brytyjski |
| ¥ | Jen japoński / Juan chiński |
| ₩ | Won południowokoreański |
| ₫ | Dong wietnamski |
⚠️ Ważne uwagi
- Ta poprawka dotyczy tylko plików PDF generowanych przez PDF Invoices & Packing Slips for WooCommerce
- Nie wpływa na wygląd frontendu twojego sklepu WooCommerce
- Jeśli zmienisz silniki PDF w ustawieniach wtyczki, poprawka nadal działa — wszystkie trzy hooki są objęte
- Po dodaniu kodu, wygeneruj ponownie istniejącą fakturę, aby potwierdzić, że symbole są teraz poprawnie renderowane