اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

مرحبا Zx Zx2،

لإنشاء ملف PDF وتحميله ينصح باستخدام مكتبة بايثون ReportLab.

لتحميل المكتبة واستعمالها في بايثون:

pip install reportlab

الشيفرة التالية تبين كيفية استعمال هذه المكتبة لإنشاء ملف PDF يحتوي على الجملة Hello world:

import io
from django.http import FileResponse
from reportlab.pdfgen import canvas

def some_view(request):
    # إنشاء ذاكرة مؤقتة لتخزين البيانات قبل حفظهافي ملف
    buffer = io.BytesIO()

    # إنشاء كائن الملف باستخدام مكتبة 
    # reportlab
    p = canvas.Canvas(buffer)

    # الكتابة على الملف
    p.drawString(100, 100, "Hello world.")

    # غلق كائن الملف وحفظه
    p.showPage()
    p.save()

    # إرسال الملف إلى العميل لتحميله
    buffer.seek(0)
    return FileResponse(buffer, as_attachment=True, filename='hello.pdf')

بالتوفيق.

  • 0
نشر (معدل)
بتاريخ 19 ساعات قال مسعود زاهي:

مرحبا Zx Zx2،

لإنشاء ملف PDF وتحميله ينصح باستخدام مكتبة بايثون ReportLab.

لتحميل المكتبة واستعمالها في بايثون:


pip install reportlab

الشيفرة التالية تبين كيفية استعمال هذه المكتبة لإنشاء ملف PDF يحتوي على الجملة Hello world:


import io
from django.http import FileResponse
from reportlab.pdfgen import canvas

def some_view(request):
    # إنشاء ذاكرة مؤقتة لتخزين البيانات قبل حفظهافي ملف
    buffer = io.BytesIO()

    # إنشاء كائن الملف باستخدام مكتبة 
    # reportlab
    p = canvas.Canvas(buffer)

    # الكتابة على الملف
    p.drawString(100, 100, "Hello world.")

    # غلق كائن الملف وحفظه
    p.showPage()
    p.save()

    # إرسال الملف إلى العميل لتحميله
    buffer.seek(0)
    return FileResponse(buffer, as_attachment=True, filename='hello.pdf')

بالتوفيق.

شكرا لك اخي مسعود و جزاك الله خيراً

ممكن سؤال ... كيف يمكن ان اضع زر يمكن للمستخدم ان يقوم بتحميل ملف PDF

تم التعديل في بواسطة Zx Zx2
نقص في الكتابة
  • 0
نشر
بتاريخ 47 دقائق مضت قال Zx Zx2:

شكرا لك اخي مسعود و جزاك الله خيراً

ممكن سؤال ... كيف يمكن ان اضع زر يمكن للمستخدم ان يقوم بتحميل ملف PDF

تقوم أولاً بتعريف رابط جديد في ملف urls.py، هذا الرابط يقوم بالربط بين القالب template الذي تضع فيه الزر ودالة العرض view على الشكل التالي:

from django.urls import path

from views import some_view#تقوم باستدعاء الدالة

urlpatterns = [
  	#تقوم بإنشاء الرابط
    path('download-pdf', some_view, name="download-pdf"),
]

تضيف الزر في القالب على شكل رابط:

<a href="{% url 'download-pdf' %}" class="btn btn-default">
  إضغط لتحميل الملف
</a>

عند ضغط المستخدم على الزر يقوم المتصفح بزيارة الرابط وتحميل الملف.

تحياتي.

  • 0
نشر
بتاريخ 14 دقائق مضت قال مسعود زاهي:

تقوم أولاً بتعريف رابط جديد في ملف urls.py، هذا الرابط يقوم بالربط بين القالب template الذي تضع فيه الزر ودالة العرض view على الشكل التالي:


from django.urls import path

from views import some_view#تقوم باستدعاء الدالة

urlpatterns = [
  	#تقوم بإنشاء الرابط
    path('download-pdf', some_view, name="download-pdf"),
]

تضيف الزر في القالب على شكل رابط:


<a href="{% url 'download-pdf' %}" class="btn btn-default">
  إضغط لتحميل الملف
</a>

عند ضغط المستخدم على الزر يقوم المتصفح بزيارة الرابط وتحميل الملف.

تحياتي.

شكراً لك اخي مسعود و جزاك الله خيراً

دائما تنورنا بأجاباتك

  • 0
نشر
بتاريخ On 10‏/5‏/2022 at 19:14 قال مسعود زاهي:

مرحبا Zx Zx2،

لإنشاء ملف PDF وتحميله ينصح باستخدام مكتبة بايثون ReportLab.

لتحميل المكتبة واستعمالها في بايثون:


pip install reportlab

الشيفرة التالية تبين كيفية استعمال هذه المكتبة لإنشاء ملف PDF يحتوي على الجملة Hello world:


import io
from django.http import FileResponse
from reportlab.pdfgen import canvas

def some_view(request):
    # إنشاء ذاكرة مؤقتة لتخزين البيانات قبل حفظهافي ملف
    buffer = io.BytesIO()

    # إنشاء كائن الملف باستخدام مكتبة 
    # reportlab
    p = canvas.Canvas(buffer)

    # الكتابة على الملف
    p.drawString(100, 100, "Hello world.")

    # غلق كائن الملف وحفظه
    p.showPage()
    p.save()

    # إرسال الملف إلى العميل لتحميله
    buffer.seek(0)
    return FileResponse(buffer, as_attachment=True, filename='hello.pdf')

بالتوفيق.

كيف اذا اريد عرض كل شئ موجود في ملف excel؟

...عذرا لاني اكثرت في الاسئلة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...