شرح إنشاء فاتورة Flutter PDF Arabic Invoiceمخصصة مع دعم و RTL خطوة بخطوة بالتفصيل
تُعد عملية إنشاء فواتير PDF داخل تطبيقات Flutter من المتطلبات الأساسية في التطبيقات التجارية والمحاسبية. يهدف هذا الأسلوب إلى توليد فواتير احترافية قابلة للطباعة والمشاركة، مع دعم كامل للغة العربية واتجاه الكتابة من اليمين إلى اليسار (RTL). تشرح هذه المقالة كيفية إنشاء فاتورة PDF ديناميكية في Flutter باستخدام مكتبة pdf مع مثال عملي ودراسة الفوائد والمشاكل المحتملة.
ما هي فواتير PDF في Flutter؟
تُستخدم هذه الفواتير عادةً في: – تطبيقات المتاجر الإلكترونية – أنظمة المحاسبة – تطبيقات إدارة الطلبات – تطبيقات نقاط البيع (POS)
سيناريو عملي لتوضيح الفكرة
إنشاء فاتورة PDF بدون دعم اللغة العربية
مساوئ هذا الأسلوب: – عدم ظهور اللغة العربية بشكل صحيح – ضعف تجربة المستخدم – صعوبة قراءة الفاتورة – عدم توافق مع الأسواق العربية
إنشاء فاتورة PDF في Flutter مع دعم اللغة العربية و RTL
Future<Uint8List> generatePdfBytes({
required InvoiceResponse invoiceResponse,
}) async {
final arabicFont = pw.Font.ttf(
await rootBundle.load("assets/fonts/cairo-font.ttf"),
);
final pdf = pw.Document();
pdf.addPage(
pw.MultiPage(
textDirection: pw.TextDirection.rtl,
build: (pw.Context context) => [
pw.Column(
children: [
pw.Row(
children: [
pw.Image(logo, width: 50, height: 50),
pw.Spacer(),
pw.Text(
"Geecoders",
style: pw.TextStyle(
font: arabicFont,
fontSize: 20,
color: const PdfColor.fromInt(0xff007A86),
),
),
],
),
],
),
pw.SizedBox(height: 20),
pw.Table.fromTextArray(
context: context,
cellStyle: pw.TextStyle(font: arabicFont),
headerStyle: pw.TextStyle(font: arabicFont),
headerAlignment: pw.Alignment.center,
cellAlignment: pw.Alignment.center,
headerDecoration: const pw.BoxDecoration(
color: PdfColor.fromInt(0xFF000000),
),
data: [
['المجموع', 'الكمية', 'السعر', 'المنتج'],
...invoiceResponse.products.map(
(p) => [
p.total,
'${p.quantity}',
'${p.price}',
'${p.productName}',
],
),
],
),
pw.SizedBox(height: 10),
pw.Row(
mainAxisAlignment: pw.MainAxisAlignment.spaceAround,
children: [
pw.Text(
'الضريبة: ٥٪',
style: pw.TextStyle(font: arabicFont, fontSize: 10),
),
pw.Text(
'إجمالي قيمة الضريبة: ١٢٠',
style: pw.TextStyle(font: arabicFont, fontSize: 10),
),
],
),
],
),
);
return pdf.save();
}
الاختلافات بين النهجين
باستخدام دعم اللغة العربية و RTL: – عرض النصوص بشكل صحيح – تجربة مستخدم احترافية – دعم كامل للأسواق العربية – تصميم قابل للتخصيص
مميزات وعيوب إنشاء فواتير PDF في Flutter
العيوب. – يتطلب إعداد خطوط مخصصة – زيادة بسيطة في حجم التطبيق – يحتاج إلى اختبار جيد على أكثر من جهاز
إن إنشاء فواتير PDF في Flutter مع دعم اللغة العربية يُعد خطوة أساسية لأي تطبيق يستهدف المستخدم العربي. باستخدام مكتبة pdf وتحميل خط عربي مخصص، يمكنك إنشاء فواتير احترافية وقابلة للتخصيص بسهولة.
هذا الأسلوب يمنح تطبيقك مظهرًا احترافيًا، ويحسّن تجربة المستخدم، ويجعل تطبيقك مناسبًا للاستخدام التجاري على نطاق واسع.
الخلاصة: يتم استخدام هذا الأسلوب عندما تحتاج إلى إنشاء فواتير PDF ديناميكية تدعم اللغة العربية واتجاه RTL، مع الحفاظ على تصميم ثابت وقابل للطباعة، وهو حل مثالي لتطبيقات Flutter التجارية والمحاسبية.



