كيف يتم جعل مكتبة 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); }
وسوف تعمل معك المكتبة في الاصدار الاخير بنجاح
اتبعت جميع الخطوات و لكنها لا تعمل معي
أفيدوني
مرحبا صالح , هل قمت بتضمين @font للخط العربي فى ملفات تنسيق الاسكربت او الاضافة التي تعمل عليها؟ اذا امكن توضيح ماهي الاضافة او الاسكربت الذي تطبق عليه الطريقة مع ذكر خطوات العمل التي قمت بها لنقوم بمساعدتك
شكرا لكم، الخطوات لا زالت تعمل حتى مع الإصدار الأخير لمكتبة DOMPDF.
فقط تم تغيير مسار ext_renderer.cls.php إلى dompdf/src/Renderer/Text.php.
جربت جمييع الخطوات ولكنها لم تعمل
الأخوة في فريق عمل تعريب، تحية طيبة أما بعد
بداية لكم جزيل الشكر على الإشارة إلى مكتبتي، وأنا سعيد أن أجد أن عملي المتواضع هذا قد عاد على مجتمع المطورين العرب بالفائدة لما فيه مصلحة وخدمة لغتنا العربية على الشابكة (الإنترنت). بداية لدي تصويب صغير يمكن أن يجعل عملية الدمج التي أشرتم إليها أعلاه أبسط قليلا، فأنا لا أرى صراحة أي حاجة لكي تطلب من المبرمج أن يدخل ويعدّل في ملف Glyphs.php ليغيّر القيمة الافتراضيّة للوسيط الاختياري max_chars$ فعدى عن كونها خطوة إضافية يمكن تجاوزها كما سأشرح لاحقا، لكنها تضيف تعقيدا نحن بغنى عنه في حال قام المطور بتحديث إصدار مكتبة PHP واللغة العربية ونسي أن يقوم بهذا التعديل مجددا مع النسخة الجديدة.
في حقيقة الأمر، كل ما أنتم بحاجة إليه هو تمرير هذه القيمة الجديدة عند استدعاء التابع/الطريقة utf8Glyphs ضمن ملف text_renderer.cls.php الذي أشرتم إليه، ليتم وبشكل تلقائي استخدامها عوض القيمة الافتراضية، أي يجب أن تقوموا بتعديل سطر الاستدعاء ليكون على الشكل التالي:
$text = $Arabic->utf8Glyphs($text, 150);
شكراً جزيلاً لحضرتك استاذ خالد وشرف لنا وجودك وردك علي المقالة وسوف نقوم بتحديث المقالة واضافة التعديل الخاص بحضرتك
كامل التحية والتقدير لشخصك الكريم ونسال الله ان يكون ما تقدمه للويب العربي من جهود فى ميزان حسناتك
Fatal error: Class ‘Dompdf\Renderer\I18N_Arabic_Glyphs’ not found in C:\xampp\htdocs\dom\dompdf_0-8-0\dompdf\src\Renderer\Text.php on line 87
الرجاء المساغدة باسرع وقت
اهلا بك
فضلا اتباع الخطوات بالتفصيل وسوف يتم حل المشكلة
عرض الارقام باللغة العربية ؟
اتبعت خطواتك لكني مازلت اتلقى هذه اخطأ Fatal error: Class ‘Dompdf\Renderer\I18N_Arabic_Glyphs’ not found in C:\xampp\htdocs\dom\dompdf_0-8-0\dompdf\src\Renderer\Text.php on line 87
اهلا بك الرجاء متابعة هذا البوست في هذا الرابط اخر 4 ردود
https://github.com/dompdf/dompdf/issues/712
تابعتها تلقيت هذه الرسالة Class ‘Dompdf\Renderer\I18N_Arabic_Glyphs’ not found هل بامكانك التواصل او المساعدة رجاء
شكرا جحزيلا لك
ولكن هناك مشكلة تقابلنى فى النسخة الحديثنة وهى انه لا يوجد ملف
text_renderer.cls.php
ولكن يوجد ملف
tex.php
وعندا اقوم بتلك الخطوة
if ( ! class_exists( ‘I18N_Arabic’ ) ){
require_once( DOMPDF_DIR . “/I18N/Arabic/Glyphs.php” );
$Arabic = new I18N_Arabic_Glyphs(‘Glyphs’);
$text = $Arabic->utf8Glyphs($text, 150);
}
يظهر هذا الخطأ
Class ‘Dompdf\Renderer\I18N_Arabic_Glyphs’ not found
اهلا بك الرجاء متابعة هذا البوست في هذا الرابط اخر 4 ردود
https://github.com/dompdf/dompdf/issues/712
شكرا الك جزيلا… بس أنا عندي الاصدار الاخير من dompdf وضمن المكتبة ضمن مجلد dompdf\render ووضعت الكود السابق ضمن المكان المحدد في ملف text.php لكن يظهر لي الخطأ التالي ..Class ‘Dompdf\Renderer\I18N_Arabic_Glyphs’ not found
علما أن namespace في ملف Text.php هي namespace Dompdf\Renderer;
أرجو المساعدة..
اهلا بك الرجاء متابعة هذا البوست في هذا الرابط اخر 4 ردود
https://github.com/dompdf/dompdf/issues/712
الاصدار الحديث لا يوجد فيه /include/text_renderer.cls.php
ما العمل
اهلا بك الرجاء متابعة هذا البوست في هذا الرابط اخر 4 ردود
https://github.com/dompdf/dompdf/issues/712
الحروف تظهر بالعربي لكن غير متصله وبالعكس
كيف اقوم بحل المشكله في laravel
تم اضافة تحديث لحل مشكلة الاصدار الحديث من مكتبة dompdf ومكتبة استاذ خالد الشمعة يمكنكم مراجعة الموضوع الجزء الخاص بالتحديث
شكرا لكم
يظهر في اللغه العربيه مسافه قبل اي كلمه
مثل “تعريب” تظهر في pdf ” تعريب”
للاسف هذه المشكلة لازلنا نعمل عليها والمشكلة تحتاج لتحديث في مكتبة اللغة العربية
شكرا على المقال،
هناك مشكلة بسيطة الفقرات التي تعرض تكون بها فراغات في البداية بشكل غير مرتب ابدا
مثال
” السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله
السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله
السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله
السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله
السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله
السلام عليكم ورحمة الله السلام عليكم ورحمة الله السلام عليكم ورحمة الله ”
مع العلم جربت خيارات الtext-align وال float وال dir لكن دون فائدة افيدوني رجاءًا ..
وهل هناك نوع خط أجمل من ال font-family: DejaVu Sans, sans-serif لاتعامل معه ؟
تحياتي مقدمًا
كيف أمنع عرض الارقام باللغة العربية و يتم عرضها بالانجليزى ؟
داخل ملف \I18N\Arabic\Glyphs.php
$hindo = true
اجعلها
$hindo = false
فعلا كل الخطوات وتم ضبط اللغه العربيه
لكن المشكله كانت في الارقام
تظهر بشكل معكوس
https://drive.google.com/file/d/1lvh6-eDGgOfwRI5Ri7zviavfFCjsEF0f/view?usp=sharing
أهلا
السلام عليكم
اتبعت كل الخطوات ولكن لم تعمل
تأكد من اتباعك لجميع الخطوات
السلام عليكم، شكرا جزيلا، ولكن الكلمات العربية لا زالت تظهر عندي على شكل علامات استفهام، هل من حل أرجوكم
وبارك الله فيكم مسبقا
السلام عليكم شكرا جزيلا علي تعبكم ولكن تقابلني مشكله هي ان الكلمات تظهر كحروف متقطعه وليس ككلمه ممكن المساعده سريعا
عفوا لم اجد رابط المكتبة ممكن ييم ارساله
http://www.ar-php.org
السلام عليكم، اواجه مشكلة في multip langueges بالنسبة اللغة الفرنسية لا تضهر لي è او à تعرض هكذا ؟؟.
جهد رائع جداا شكرااا
مرحبا الارقام تيجي مقلوبة مثل الكتابة هل يوجد حل لذلك
يوجد مشكلة , عند الطباعة لملف PDF , في بعض الكلمات يضيف مسافة Space قبل الكلمة
يعمل العربي ولكن كيف قلب الصفحة من اليمن الى اليسار
وشكرا لكم
السلام عليكم أخي الكريم .
لدي هذه المشكلة منذه تقريباً 5 أيام وانا ابحث عنها ،
المشكلة انه فقط أريد ان تدعم العربي فقط .
غير ذالك استخدمت الكثير من المكاتب ولكن لم تعمل المطلوب .
الكثير منهم بها مشاكل مع الCSS .
من فضلك مساعدة .
ابدعتم عنجد شكرا المشكلة هذي كانت كارثه …