كيف يتم جعل مكتبة dompdf تقبل ظهور اللغة العربية بشكل صحيح !
اولا ماهي مكتبة dompdf
هي مكتبة برمجية تقوم بتوليد ملفات PDF وهي تقوم بشكل مبسط على تحويل نصوص HTML الى ملفات PDF ويتم الاستعانة بها فى العديد من تطبيقات الويب والعديد من الاسكربتات والاضافات سواء لووردبريس او العديد من المنصات البرمجية الاخرى
ماهي مشكلة dompdf
المشكلة تحديداً هي ان هذه المكتبة لا تدعم ظهور اللغة العربية بشكل صحيح رغم كل المحاولات للعديد من المبرمجين بما فيهم مبرمج المكتبة فتظهر كلمة مثل
اهلا بك
بهذا الشكل
ك ب ا ل ه ا
وترجع المشكلة من بداية ظهور Dompdf وظلت المشكلة لاكثر من 3 الى 4 سنين دون حل (قبل نشرنا للحل المؤكد لدعم اللغة العربية بشكل كامل بالاستعانة بمكتبة php للغة العربية لاستاذ خالد الشمعة)
كيفية حل المشكلة
لحل مشكلة ظهور اللغة العربية فى مكتبة dompdf برجاء اتباع الخطوات التالية : 1- قم بتحميل مكتبة PHP واللغة العربية من الموقع الرسمي لها على الرابط التالي
2- قم بفك الضغط عن محتويات مكتبة PHP واللغة العربية وقم برفع مجلد I18N الى المجلد الرئيسي لمكتبة dompdf 3- قم بفتح ملف text_renderer.cls.php الموجود فى هذا المسار
\dompdf/include/text_renderer.cls.php
ابحث عن هذا السطر
$this->_canvas->text($x, $y, $text
وقم باضافة هذا الكود قبل السطر السابق (لا تحذف السطر السابق فقط قم باضافة الكود التالي قبلة)
if ( ! class_exists( 'I18N_Arabic' ) ){ require_once( DOMPDF_DIR . "/I18N/Arabic/Glyphs.php" ); $Arabic = new I18N_Arabic_Glyphs('Glyphs'); $text = $Arabic->utf8Glyphs($text, 150); }
واخيرا ستحتاج الى ضبط خط عربي فى ملف ال css الخاص بتنسيقات الصفحة يمكنك استخدام اي خط عربي مثل هذا الخط
http://www.arfonts.net/fonts/e3lan-unicode/alhurratxtlight.zip
تحديث للنسخة الاخيرة لمكتبة Dompdf
في الاصدار الاخير سوف يتم التعديل بعض النقاط
بدل هذا المسار
\dompdf/include/text_renderer.cls.php
سوف يكون هذا الملف بهذا المسار
dompdf\src\Renderer\Text.php
ثم اتبع هذه الخطوات
1: في بداية الملف الا وهو
Text.php
ابحث عن
use Dompdf\Frame;
ثم ضع اسفلها
use I18N_Arabic_Glyphs;
الخطوة الثانية
ابحث عن
$this->_canvas->text($x, $y, $text,
ثم ضع الكود ربط المكتبة العربية الا وهو
if ( ! class_exists( 'I18N_Arabic' ) ){ require_once( DOMPDF_DIR . "/I18N/Arabic/Glyphs.php" ); $Arabic = new I18N_Arabic_Glyphs('Glyphs'); $text = $Arabic->utf8Glyphs($text, 150); }
وسوف تعمل معك المكتبة في الاصدار الاخير بنجاح