كمال شلبي نشر 6 مارس أرسل تقرير نشر 6 مارس 1. كيف يمكنني إنشاء ملفات pdf بواسطة بايثون بحيث تكون على شكل جدول مثلا كود المنتج اسم المنتج السعر الكمية يوجد ملف مرفق فيه الخانات كبيرة جدا فأريد تصغيرها لحجم مناسب 2. أريد استخدام الأرقام العربية بدلا من الأرقام اللاتينية في العديد من البرامج. كيف ذلك؟ في الملف المرفق مثال. وشكرا لكم mydoc.pdf 2 اقتباس
0 Mahmoud Hassan19 نشر 6 مارس أرسل تقرير نشر 6 مارس مرحبا من الممكن استخدام مكتبة reportlab لإنشاء ملفات PDF بواسطة بايثون وتحويل جدول إلى مستند PDF ثبت المكتبة عن طريق ذاللك الامر pip install reportlab يمكن تحويل جدول الي pdf عن طريق استخدام هذه الكود from reportlab.lib.pagesizes import letter from reportlab.lib import colors from reportlab.platypus import SimpleDocTemplate, Table, TableStyle # هنا بيانات الجدول data = [ ["كود المنتج", "اسم المنتج", "السعر", "الكمية"], ["001", "منتج 1", "50", "10"], ["002", "منتج 2", "30", "15"], ["003", "منتج 3", "20", "20"] ] # هنا انشاء اسم ال pdf pdf_filename = "جدول.pdf" document = SimpleDocTemplate(pdf_filename, pagesize=letter) #اعداد ال style الخاص بالجدول table = Table(data) table.setStyle(TableStyle([ ('BACKGROUND', (0, 0), (-1, 0), colors.grey), ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONTNAME', (0, 0), (-1, 0), 'Arabic'), ('BOTTOMPADDING', (0, 0), (-1, 0), 12), ('BACKGROUND', (0, 1), (-1, -1), colors.beige), ('GRID', (0, 0), (-1, -1), 1, colors.black), ])) # اضافة الجدول الي مستند pdf document.build([table]) بالنسبة للارقام العربية من المككن استخدام مكتبة arabicreshaper, bidi عن طريق تثبيتهم pip install arabic-reshaper pip install python-bidi بعد ذاللك في اعدادات الجدول استخدم هذا الكود from arabic_reshaper import reshape from bidi.algorithm import get_display reshaped_data = [[get_display(reshape(cell)) for cell in row] for row in data] # هنا لتحويل كل cell من الجدول والي االغة العربيى table = Table(reshaped_data) اذن الكود ككل يحب ان يكون هكذا from reportlab.lib.pagesizes import letter from reportlab.lib import colors from reportlab.platypus import SimpleDocTemplate, Table, TableStyle from arabic_reshaper import reshape from bidi.algorithm import get_display # بيانات الجدول data = [ ["كود المنتج", "اسم المنتج", "السعر", "الكمية"], ["001", "منتج 1", "50", "10"], ["002", "منتج 2", "30", "15"], ["003", "منتج 3", "20", "20"] ] # إعداد مستند PDF pdf_filename = "جدول.pdf" document = SimpleDocTemplate(pdf_filename, pagesize=letter) # تشكيل البيانات للعرض الصحيح للنصوص العربية reshaped_data = [[get_display(reshape(cell)) for cell in row] for row in data] # إعداد الجدول table = Table(reshaped_data) table.setStyle(TableStyle([ ('BACKGROUND', (0, 0), (-1, 0), colors.grey), ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONTNAME', (0, 0), (-1, 0), 'Arabic'), ('BOTTOMPADDING', (0, 0), (-1, 0), 12), ('BACKGROUND', (0, 1), (-1, -1), colors.beige), ('GRID', (0, 0), (-1, -1), 1, colors.black), ])) # إضافة الجدول إلى المستند document.build([table]) اقتباس
0 كمال شلبي نشر 7 مارس الكاتب أرسل تقرير نشر 7 مارس بتاريخ 18 ساعة قال Mahmoud Hassan19: مرحبا من الممكن استخدام مكتبة reportlab لإنشاء ملفات PDF بواسطة بايثون وتحويل جدول إلى مستند PDF ثبت المكتبة عن طريق ذاللك الامر pip install reportlab يمكن تحويل جدول الي pdf عن طريق استخدام هذه الكود from reportlab.lib.pagesizes import letter from reportlab.lib import colors from reportlab.platypus import SimpleDocTemplate, Table, TableStyle # هنا بيانات الجدول data = [ ["كود المنتج", "اسم المنتج", "السعر", "الكمية"], ["001", "منتج 1", "50", "10"], ["002", "منتج 2", "30", "15"], ["003", "منتج 3", "20", "20"] ] # هنا انشاء اسم ال pdf pdf_filename = "جدول.pdf" document = SimpleDocTemplate(pdf_filename, pagesize=letter) #اعداد ال style الخاص بالجدول table = Table(data) table.setStyle(TableStyle([ ('BACKGROUND', (0, 0), (-1, 0), colors.grey), ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONTNAME', (0, 0), (-1, 0), 'Arabic'), ('BOTTOMPADDING', (0, 0), (-1, 0), 12), ('BACKGROUND', (0, 1), (-1, -1), colors.beige), ('GRID', (0, 0), (-1, -1), 1, colors.black), ])) # اضافة الجدول الي مستند pdf document.build([table]) بالنسبة للارقام العربية من المككن استخدام مكتبة arabicreshaper, bidi عن طريق تثبيتهم pip install arabic-reshaper pip install python-bidi بعد ذاللك في اعدادات الجدول استخدم هذا الكود from arabic_reshaper import reshape from bidi.algorithm import get_display reshaped_data = [[get_display(reshape(cell)) for cell in row] for row in data] # هنا لتحويل كل cell من الجدول والي االغة العربيى table = Table(reshaped_data) اذن الكود ككل يحب ان يكون هكذا from reportlab.lib.pagesizes import letter from reportlab.lib import colors from reportlab.platypus import SimpleDocTemplate, Table, TableStyle from arabic_reshaper import reshape from bidi.algorithm import get_display # بيانات الجدول data = [ ["كود المنتج", "اسم المنتج", "السعر", "الكمية"], ["001", "منتج 1", "50", "10"], ["002", "منتج 2", "30", "15"], ["003", "منتج 3", "20", "20"] ] # إعداد مستند PDF pdf_filename = "جدول.pdf" document = SimpleDocTemplate(pdf_filename, pagesize=letter) # تشكيل البيانات للعرض الصحيح للنصوص العربية reshaped_data = [[get_display(reshape(cell)) for cell in row] for row in data] # إعداد الجدول table = Table(reshaped_data) table.setStyle(TableStyle([ ('BACKGROUND', (0, 0), (-1, 0), colors.grey), ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONTNAME', (0, 0), (-1, 0), 'Arabic'), ('BOTTOMPADDING', (0, 0), (-1, 0), 12), ('BACKGROUND', (0, 1), (-1, -1), colors.beige), ('GRID', (0, 0), (-1, -1), 1, colors.black), ])) # إضافة الجدول إلى المستند document.build([table]) بارك الله فيك وزادك علما وفضلا بعد أن نسخت الكود الذي تكرمت بارساله ظهرت لي سلسلة الأخطاء التالية علما بأن المكتبات المطلوبة مثبة بواسطة الpip. ههلا أرشدتني إلى خطأي؟ وشكرا لك C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\python.exe H:\sqlite\pdf5h.py Traceback (most recent call last): File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 697, in getFont return _fonts[fontName] ~~~~~~^^^^^^^^^^ KeyError: 'Arabic' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "H:\sqlite\pdf5h.py", line 35, in <module> document.build([table]) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\doctemplate.py", line 1317, in build BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\doctemplate.py", line 1082, in build self.handle_flowable(flowables) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\doctemplate.py", line 931, in handle_flowable if frame.add(f, canv, trySplit=self.allowSplitting): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\frames.py", line 158, in _add w, h = flowable.wrap(aW, h) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 1346, in wrap self._calc(availWidth, availHeight) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 735, in _calc self._calc_width(availWidth,W=W) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 542, in _calc_width t = self._elementWidth(v,s) ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 608, in _elementWidth return max([stringWidth(x,fontName,fontSize) for x in v]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 608, in <listcomp> return max([stringWidth(x,fontName,fontSize) for x in v]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 733, in stringWidth return getFont(fontName).stringWidth(text, fontSize, encoding=encoding) ^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 699, in getFont return findFontAndRegister(fontName) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 681, in findFontAndRegister face = getTypeFace(fontName) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 638, in getTypeFace return _typefaces[faceName] ~~~~~~~~~~^^^^^^^^^^ KeyError: 'Arabic' Process finished with exit code 1 اقتباس
0 Mahmoud Hassan19 نشر 7 مارس أرسل تقرير نشر 7 مارس بتاريخ 4 ساعة قال كمال شلبي: بارك الله فيك وزادك علما وفضلا بعد أن نسخت الكود الذي تكرمت بارساله ظهرت لي سلسلة الأخطاء التالية علما بأن المكتبات المطلوبة مثبة بواسطة الpip. ههلا أرشدتني إلى خطأي؟ وشكرا لك C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\python.exe H:\sqlite\pdf5h.py Traceback (most recent call last): File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 697, in getFont return _fonts[fontName] ~~~~~~^^^^^^^^^^ KeyError: 'Arabic' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "H:\sqlite\pdf5h.py", line 35, in <module> document.build([table]) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\doctemplate.py", line 1317, in build BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\doctemplate.py", line 1082, in build self.handle_flowable(flowables) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\doctemplate.py", line 931, in handle_flowable if frame.add(f, canv, trySplit=self.allowSplitting): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\frames.py", line 158, in _add w, h = flowable.wrap(aW, h) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 1346, in wrap self._calc(availWidth, availHeight) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 735, in _calc self._calc_width(availWidth,W=W) File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 542, in _calc_width t = self._elementWidth(v,s) ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 608, in _elementWidth return max([stringWidth(x,fontName,fontSize) for x in v]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\platypus\tables.py", line 608, in <listcomp> return max([stringWidth(x,fontName,fontSize) for x in v]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 733, in stringWidth return getFont(fontName).stringWidth(text, fontSize, encoding=encoding) ^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 699, in getFont return findFontAndRegister(fontName) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 681, in findFontAndRegister face = getTypeFace(fontName) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\k.shalabi\AppData\Local\Programs\Python\Python311\Lib\site-packages\reportlab\pdfbase\pdfmetrics.py", line 638, in getTypeFace return _typefaces[faceName] ~~~~~~~~~~^^^^^^^^^^ KeyError: 'Arabic' Process finished with exit code 1 ممكن ترسل ملف المشروع اقتباس
0 كمال شلبي نشر 7 مارس الكاتب أرسل تقرير نشر 7 مارس بتاريخ 5 دقائق مضت قال Mahmoud Hassan19: ممكن ترسل ملف المشروع لا يوجد مشروع. فقط أردت تجربة البرنامج الذي أرسلته لي فظهرت لي الأخطاء التي أرسلتها لك اقتباس
0 Mahmoud Hassan19 نشر 7 مارس أرسل تقرير نشر 7 مارس بتاريخ 17 دقائق مضت قال كمال شلبي: لا يوجد مشروع. فقط أردت تجربة البرنامج الذي أرسلته لي فظهرت لي الأخطاء التي أرسلتها لك تمام المشكلة عندك انه لا يوجد font arabic متسجل علي جهازك ساسل لك الفونت مع الكود اللي عندي test.rar اقتباس
0 كمال شلبي نشر 7 مارس الكاتب أرسل تقرير نشر 7 مارس بتاريخ 4 دقائق مضت قال Mahmoud Hassan19: تمام المشكلة عندك انه لا يوجد font arabic متسجل علي جهازك ساسل لك الفونت مع الكود اللي عندي test.rar 58.16 kB · 0 تنزيلات تمام لكن لا زالت الأرقام بالانجليزي جدول.pdf اقتباس
السؤال
كمال شلبي
1. كيف يمكنني إنشاء ملفات pdf بواسطة بايثون بحيث تكون على شكل جدول مثلا
كود المنتج اسم المنتج السعر الكمية
يوجد ملف مرفق فيه الخانات كبيرة جدا فأريد تصغيرها لحجم مناسب
2. أريد استخدام الأرقام العربية بدلا من الأرقام اللاتينية في العديد من البرامج. كيف ذلك؟
في الملف المرفق مثال.
وشكرا لكم
mydoc.pdf
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.