جعل dompdf يدعم اللغة العربية

كيف يتم جعل مكتبة dompdf تقبل ظهور اللغة العربية بشكل صحيح !

اولا ماهي مكتبة dompdf

هي مكتبة برمجية تقوم بتوليد ملفات PDF وهي تقوم بشكل مبسط على تحويل نصوص HTML الى ملفات PDF ويتم الاستعانة بها فى العديد من تطبيقات الويب والعديد من الاسكربتات والاضافات سواء لووردبريس او العديد من المنصات البرمجية الاخرى

ماهي مشكلة dompdf

المشكلة تحديداً هي ان هذه المكتبة لا تدعم ظهور اللغة العربية بشكل صحيح رغم كل المحاولات للعديد من المبرمجين بما فيهم مبرمج المكتبة فتظهر كلمة مثل

اهلا بك

بهذا الشكل

ك ب ا ل ه ا

وترجع المشكلة من بداية ظهور Dompdf وظلت المشكلة لاكثر من 3 الى 4 سنين دون حل (قبل نشرنا للحل المؤكد لدعم اللغة العربية بشكل كامل بالاستعانة بمكتبة php للغة العربية لاستاذ خالد الشمعة)

كيفية حل المشكلة

لحل مشكلة ظهور اللغة العربية فى مكتبة dompdf برجاء اتباع الخطوات التالية : 1- قم بتحميل مكتبة PHP واللغة العربية من الموقع الرسمي لها على الرابط التالي

http://www.ar-php.org

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); }

وسوف تعمل معك المكتبة في الاصدار الاخير بنجاح

وبالاخير نود التوجه بالشكر الى الاستاذ خالد الشمعة لانشاءه مكتبة PHP واللغة العربية الرائعة التي قامت بحل العديد من صعوبات دعم اللغة العربية فى php