دعم اللغة العربية في PYTHON

MostafaAbdRabbu
  • بواسطة MostafaAbdRabbu ||
السلام عليكم
تعلمت بايثون منذ فترة قريبة، فيها مميزات كثيرة جدا، وحاليا أصمم بها تطبيقات بسيطة، ولكن تواجهني مشكلة متكررة لم أجد لها حلا
أي مخرجات باللغة العربية تكون رديئة للغاية

صممت برنامج بسيط للفواتير، الناتج النهائي يخرج PDF لا يدعم الحروف العربية
وبرنامج استخراج الكلمات من ملفات PDF تخرج الكلمات مليئة بالأخطاء

حاولت كثيرا ولم أجد حلا، أفيدوني رجاء

وشكرا
 
  • أعجبنى
التفاعلات: x32x01 و lbebulk
  • بواسطة lbebulk ||
استخدم مكتبة arabic-reshaper مع bidi.algorithm لتهيئة النص العربي بشكل صحيح
Code:
pip install reportlab arabic-reshaper python-bidi
شوف كده السكريبت ده .. أقرب لأنشاء فواتير
Python:
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
import arabic_reshaper
from bidi.algorithm import get_display

# إعداد الملف
pdf = SimpleDocTemplate("فاتورة.pdf", pagesize=letter, rightToLeft=True)
styles = getSampleStyleSheet()
style = styles["Normal"]
style.fontName = "Arial"  # تأكد من أن لديك خط عربي (مثل Arial أو تحميل خط آخر)
style.fontSize = 12
style.alignment = 2  # محاذاة لليمين

# النص العربي
text = "فاتورة بيع\nالمنتج: كتاب\nالسعر: 100 ريال"
reshaped_text = arabic_reshaper.reshape(text)  # إعادة تشكيل الحروف
bidi_text = get_display(reshaped_text)  # ضبط الاتجاه

# إنشاء الفقرة وإضافتها للملف
content = [Paragraph(bidi_text, style)]
pdf.build(content)
print("تم إنشاء الفاتورة بنجاح!")
 
  • أعجبنى
التفاعلات: x32x01
  • بواسطة MostafaAbdRabbu ||
شكرا لاهتمامك
جربت استخدام المكتبتين ولكن نفس النتيجة للأسف
 
  • أعجبنى
التفاعلات: x32x01
  • بواسطة MostafaAbdRabbu ||
شكل الناتج النهائي
 
  • 20.pdf -
    2.2 كيلوبايت · المشاهدات: 2
  • أعجبنى
التفاعلات: x32x01
  • بواسطة x32x01 ||
شكل الناتج النهائي
حل المشكلة هى انك تقوم بتنزيل خط مجاني مثل "Amiri" أو "Cairo" من مواقع مثل Google Fonts
سجل الخط في reportlab باستخدام
Python:
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont("Amiri", "Amiri-Regular.ttf"))
style.fontName = "Amiri"
 
التعديل الأخير:
المشاركات المتشابهة
x32x01
الردود
0
المشاهدات
112
x32x01
x32x01
x32x01
الردود
0
المشاهدات
80
x32x01
x32x01
x32x01
الردود
0
المشاهدات
190
x32x01
x32x01
x32x01
الردود
0
المشاهدات
122
x32x01
x32x01
x32x01
الردود
0
المشاهدات
96
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,630
المشاركات
1,823
أعضاء أكتب كود
256
أخر عضو
computeruser
عودة
أعلى