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

كيف انشاء ملف PDF في Django؟

Abdulazeez Altameemi

السؤال

اريد انشاء ملف pdf وجعل المستخدم قادر على تحميل هذا الملف 

ملف PDF ستوضع بداخله حل لمسائل رياضية.... يقوم المستخدم بأدخال قيم الى Form و يظهر له الحل على شكل ملف PDF

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...