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 كيلوبايت · المشاهدات: 42
  • أعجبنى
التفاعلات: 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
المشاهدات
8
x32x01
x32x01
x32x01
الردود
0
المشاهدات
14
x32x01
x32x01
x32x01
الردود
4
المشاهدات
398
x32x01
x32x01
x32x01
الردود
0
المشاهدات
196
x32x01
x32x01
x32x01
الردود
0
المشاهدات
146
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,651
المشاركات
1,854
أعضاء أكتب كود
346
أخر عضو
zayan
عودة
أعلى