با ما در ارتباط باشید

 پایتون چگونه فایل PDF چند صفحه‌ای می‌سازد؟ آموزش در 5 گام

31 بازدید

آنچه در این مقاله می خوانید:

در این آموزش با استفاده از زبان پایتون و کتابخانه ReportLab یاد می‌گیرید چگونه یک فایل PDF چند صفحه‌ای شامل سربرگ، جدول آیتم‌ها و جمع کل ایجاد کنید. این پروژه به‌صورت گام‌به‌گام طراحی شده و مناسب افرادی است که می‌خواهند مهارت‌های عملی خود را در زمینه تولید اسناد حرفه‌ای تقویت کنند. خروجی این برنامه می‌تواند در کاربردهایی مانند فاکتور، گزارش یا جزوه مورد استفاده قرار گیرد.

آیا می‌خواهید یک پروژه پایتون جذاب و کاربردی را تجربه کنید؟ اگر به دنبال یادگیری نحوه ایجاد اسناد PDF چند صفحه‌ای هستید یا می‌خواهید مهارت‌های خود را با یک پروژه واقعی تقویت کنید، این مقاله برای شماست! در این آموزش، قدم‌به‌قدم یاد می‌گیرید که چگونه با استفاده از کتابخانه `reportlab` یک فایل PDF چند صفحه‌ای بسازید که می‌تواند برای کاربردهایی مثل فاکتور، گزارش یا جزوه استفاده شود. این پروژه برای برنامه‌نویسان سطح متوسط طراحی شده و به شما کمک می‌کند تا با مفاهیم کار با کتابخانه‌های پایتون، قالب‌بندی اسناد و مدیریت محتوا آشنا شوید. آماده‌اید؟ بیایید شروع کنیم!

 چرا ساخت فایل PDF با پایتون؟

 چرا ساخت فایل PDF با پایتون؟

پایتون به دلیل سادگی، انعطاف‌پذیری و کتابخانه‌های قدرتمندش یکی از بهترین انتخاب‌ها برای خودکارسازی وظایف است. ساخت یک فایل PDF چند صفحه‌ای به شما امکان می‌دهد:

– با کتابخانه‌های تولید PDF مثل `reportlab` آشنا شوید.

– مهارت‌های مدیریت محتوا و قالب‌بندی اسناد را تمرین کنید.

– یک پروژه کاربردی به رزومه خود اضافه کنید که در دنیای واقعی (مثل تولید فاکتور یا گزارش) کاربرد دارد.

– با مفاهیم پیشرفته‌تر پایتون مثل کار با داده‌های ساختاریافته و خروجی‌های گرافیکی آشنا شوید.

این پروژه نیازی به دانش خیلی پیشرفته ندارد و با چند خط کد می‌توانید یک سند حرفه‌ای بسازید. چه بخواهید یک فاکتور برای کسب‌وکارتان بسازید یا یک جزوه آموزشی، این آموزش شما را راهنمایی می‌کند!

 ابزارهای مورد نیاز

برای شروع این پروژه، به موارد زیر نیاز دارید:

– پایتون: نسخه 3.6 یا بالاتر. می‌توانید آن را از [سایت رسمی پایتون](https://www.python.org) دانلود کنید.

کتابخانه ReportLab: این کتابخانه را با دستور `pip install reportlab` نصب کنید.

– ویرایشگر کد: ابزارهایی مثل Visual Studio Code، PyCharm یا حتی IDLE مناسب هستند.

– دانش اولیه: آشنایی با مفاهیم پایه پایتون مثل توابع، لیست‌ها، دیکشنری‌ها و حلقه‌ها کافی است.

– یک فنجان چای (اختیاری): برای لذت بردن بیشتر از کدنویسی!

 قدم اول: تنظیم ساختار پروژه

ابتدا یک فایل جدید به نام `create_pdf.py` ایجاد کنید. این فایل قلب پروژه ماست و تمام کدها در آن نوشته می‌شوند. ما از کتابخانه `reportlab` برای تولید یک فایل PDF چند صفحه‌ای استفاده می‌کنیم که شامل یک فاکتور نمونه با جدول، متن و سربرگ است. پروژه ما شامل این بخش‌هاست:

ایجاد سربرگ: افزودن لوگو، عنوان و اطلاعات شرکت.

ایجاد جدول آیتم‌ها: نمایش فهرست محصولات یا خدمات در قالب جدول.

مدیریت چند صفحه: اگر داده‌ها زیاد باشند، به‌طور خودکار به صفحات جدید منتقل می‌شوند.

ذخیره PDF: تولید فایل نهایی با فرمت PDF.

 قدم دوم: نصب و راه‌اندازی ReportLab

برای نصب کتابخانه ReportLab، ترمینال یا خط فرمان را باز کنید و دستور زیر را اجرا کنید:

bash

pip install reportlab

این کتابخانه ابزارهای لازم برای ایجاد PDF، افزودن متن، جدول و حتی تصاویر را فراهم می‌کند.

این کتابخانه را از PyPI یا مستندات رسمی ReportLab نصب و بررسی کنید.

 قدم سوم: نوشتن کد اصلی

بیایید یک برنامه بنویسیم که یک فاکتور چند صفحه‌ای تولید کند. این فاکتور شامل سربرگ، جدول آیتم‌ها و جمع کل است. کد زیر را در فایل `create_pdf.py` کپی کنید:

python

from reportlab.lib.pagesizes import A4

from reportlab.lib import colors

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle

from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

from reportlab.lib.units import cm

def create_invoice_pdf(filename, company_info, items):

    # تنظیم فایل PDF

    doc = SimpleDocTemplate(filename, pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm)

    # تعریف استایل‌ها

    styles = getSampleStyleSheet()

    title_style = styles['Heading1']

    title_style.alignment = 1  # وسط‌چین

    normal_style = ParagraphStyle(name='NormalRTL', parent=styles['Normal'], alignment=2, fontName='Helvetica', fontSize=10, leading=12)

    # لیست عناصر PDF

    elements = []

    # افزودن سربرگ

    elements.append(Paragraph("فاکتور رسمی", title_style))

    elements.append(Spacer(1, 0.5*cm))

    elements.append(Paragraph(f"نام شرکت: {company_info['name']}", normal_style))

    elements.append(Paragraph(f"آدرس: {company_info['address']}", normal_style))

    elements.append(Paragraph(f"شماره تماس: {company_info['phone']}", normal_style))

    elements.append(Spacer(1, 1*cm))

    # داده‌های جدول

    table_data = [['#', 'شرح', 'تعداد', 'قیمت واحد (تومان)', 'جمع (تومان)']]

    total = 0

    for i, item in enumerate(items, 1):

        row_total = item['quantity'] * item['unit_price']

        total += row_total

        table_data.append([str(i), item['description'], str(item['quantity']), f"{item['unit_price']:,}", f"{row_total:,}"])

    table_data.append(['', '', '', 'جمع کل:', f"{total:,}"])

    # ایجاد جدول

    table = Table(table_data, colWidths=[1*cm, 8*cm, 2*cm, 3*cm, 3*cm])

    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, -1), 'Helvetica'),

        ('FONTSIZE', (0, 0), (-1, -1), 10),

        ('BOTTOMPADDING', (0, 0), (-1, 0), 12),

        ('BACKGROUND', (0, 1), (-1, -2), colors.beige),

        ('GRID', (0, 0), (-1, -1), 1, colors.black),

        ('ALIGN', (-2, -1), (-1, -1), 'RIGHT'),  # جمع کل راست‌چین

    ]))

    elements.append(table)

    # ساخت PDF

    doc.build(elements)

    print(f"فایل PDF با نام {filename} با موفقیت ایجاد شد!")

def main():

    # اطلاعات نمونه

    company_info = {

        'name': 'شرکت نمونه',

        'address': 'تهران، خیابان اصلی، پلاک ۱۲۳',

        'phone': '۰۲۱-۱۲۳۴۵۶۷۸'

    }

    items = [

        {'description': 'لپ‌تاپ مدل X', 'quantity': 2, 'unit_price': 25000000},

        {'description': 'ماوس بی‌سیم', 'quantity': 5, 'unit_price': 500000},

        {'description': 'کیبورد مکانیکی', 'quantity': 3, 'unit_price': 1500000},

    ]

    # تولید PDF

    create_invoice_pdf("invoice.pdf", company_info, items)

if __name__ == "__main__":

    main()
Python

 توضیحات کد

کتابخانه ReportLab: از ماژول‌های `platypus` برای ایجاد اشیاء قابل جریان (مثل پاراگراف و جدول) و `lib` برای تنظیمات صفحه و استایل‌ها استفاده می‌کنیم.

– سربرگ فاکتور: اطلاعات شرکت مثل نام، آدرس و شماره تماس به‌صورت پاراگراف اضافه شده‌اند.

– جدول آیتم‌ها: یک جدول با ستون‌های شماره، شرح، تعداد، قیمت واحد و جمع کل ایجاد شده که به‌صورت خودکار با داده‌های ورودی پر می‌شود.

– مدیریت چند صفحه: اگر تعداد آیتم‌ها زیاد باشد،`reportlab` به‌طور خودکار محتوا را به صفحات جدید منتقل می‌کند.

– خروجی: فایل PDF با نام `invoice.pdf` ذخیره می‌شود.

 قدم چهارم: اجرای برنامه

1. کد را در فایل `create_pdf.py` ذخیره کنید.

2. مطمئن شوید که `reportlab` نصب شده است.

3. برنامه را با دستور `python create_pdf.py` اجرا کنید.

4. فایل `invoice.pdf` در پوشه پروژه ایجاد می‌شود. آن را باز کنید و نتیجه را ببینید!

 قدم پنجم: ایده‌هایی برای گسترش پروژه

– افزودن لوگو: با استفاده از `reportlab.graphics` می‌توانید یک تصویر لوگو به سربرگ اضافه کنید.

– پشتیبانی از زبان‌های راست‌به‌چپ: برای بهبود نمایش متن فارسی، می‌توانید از فونت‌های مناسب مثل `Vazirmatn` استفاده کنید (نیاز به نصب فونت و تنظیمات اضافی دارد).

– ورودی کاربر: یک رابط کاربری ساده اضافه کنید تا کاربر بتواند اطلاعات شرکت و آیتم‌ها را وارد کند

– ایجاد قالب‌های مختلف: کد را طوری تغییر دهید که بتوانید گزارش، جزوه یا رزومه تولید کنید.

 نتیجه‌گیری

با این آموزش، شما یک فایل PDF چند صفحه‌ای کاربردی با پایتون ساختید که می‌تواند به‌عنوان فاکتور، گزارش یا جزوه استفاده شود. این پروژه نه‌تنها مهارت‌های شما را در کار با پایتون و کتابخانه `reportlab` تقویت می‌کند، بلکه یک ابزار واقعی به شما می‌دهد که می‌توانید در پروژه‌های حرفه‌ای استفاده کنید. حالا وقت آن است که کد را اجرا کنید و PDF خود را بسازید! اگر سؤالی دارید یا نیاز به کمک دارید، در بخش نظرات بپرسید. موفق باشید!

برای کسب اطلاعات بیشتر از وبسایت سبک کار دیدن کنید.

برای کسب اطلاعات بیشتر از وبسایت سبک کار دیدن کنید.

ارسال دیدگاه
0 0 رای ها
Article Rating
اشتراک در
اطلاع از
guest
0 Comments
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
جدیدترین مقالات

فهرست مطالب

0
افکار شما را دوست داریم، لطفا نظر دهید.x