CodeGym /Kurslar /Python SELF AZ /Mətn və başlıqların PDF sənədlərdə tərtibatı ReportLab il...

Mətn və başlıqların PDF sənədlərdə tərtibatı ReportLab ilə

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. PDF-ə mətn və başlıqlar əlavə etmənin əsasları

ReportLab-da mətn canvas obyektindən istifadə olunaraq əlavə edilir. Bu obyekt, şriftlərin, rənglərin, ölçülərin və mətnin mövqelərinin təyin edilməsi metodlarını təqdim edir.

Başlıq və mətn ilə sadə PDF yaratmaq

Python

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4

# Yeni PDF yaradırıq
pdf_file = canvas.Canvas("styled_text.pdf", pagesize=A4)
width, height = A4

# Başlıq əlavə edirik
pdf_file.setFont("Helvetica-Bold", 20)
pdf_file.drawString(100, height - 100, "Satış hesabatı")

# Əsas mətn əlavə edirik
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Bu sənəd son rüb üzrə satış məlumatlarını ehtiva edir.")

# PDF-i yadda saxlayırıq
pdf_file.save()

Bu kod başlıq və əsas mətn olan bir PDF faylı yaradır. Biz setFont() metodu vasitəsilə mətnin şriftini və ölçüsünü təyin edirik.

2. Mətnin üslublaşdırılması və formatlaşdırılması

ReportLab ilə mətnin rəngini, şriftini və ölçüsünü dəyişdirmək mümkündür, bu da tərzli başlıqlar və əsas məzmun yaratmağa kömək edir. Bu, sənədin struktura salınmasını təmin edir və onu oxumağı daha rahat edir.

Şriftin və mətn ölçüsünün dəyişdirilməsi

ReportLab Helvetica, Times-RomanCourier kimi standart şriftləri dəstəkləyir. Siz şriftin üslubunu (adi, qalın və ya kursiv) və ölçüsünü setFont() istifadə edərək təyin edə bilərsiniz.

Python

pdf_file.setFont("Helvetica-Bold", 18)  # Qalın şriftdə başlıq
pdf_file.drawString(100, height - 50, "Əsas başlıq")

pdf_file.setFont("Helvetica-Oblique", 14)  # Kursivlə alt başlıq
pdf_file.drawString(100, height - 80, "Alt başlıq: Rübün yekunları")

Mətn rənginin dəyişdirilməsi

Mətn rəngini setFillColorRGB() metodu ilə dəyişə bilərsiniz, bu metod 0-dan 1-ə qədər RGB dəyərlərini qəbul edir.

Python

pdf_file.setFillColorRGB(0.2, 0.4, 0.6)  # Mavi rəng
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 110, "Bu mətn mavi rəngdədir.")

Bundan əlavə, reportlab.lib.colors kitabxanasından əvvəlcədən təyin edilmiş rənglərdən istifadə edə bilərsiniz.

Python

from reportlab.lib import colors

pdf_file.setFillColor(colors.red)
pdf_file.drawString(100, height - 140, "Qırmızı mətn")

3. Mətni hizalama və çoxsətrli mətn

Əgər mətn uzundursa, onu çoxsətrli formatda təqdim etmək daha yaxşıdır. ReportLab, sətirlərin avtomatik keçirilmsini dəstəkləyən TextObject sinfini təqdim edir.

TextObject ilə çoxsətrli mətn

Python

text = """
Hesabat son üç ayın satış analizini ehtiva edir.
Biz dəyişiklikləri və onların şirkətin ümumi artımına təsirini nəzərdən keçiririk.
"""

text_object = pdf_file.beginText(100, height - 180)
text_object.setFont("Helvetica", 12)
text_object.setFillColor(colors.darkblue)

for line in text.split("\n"):
    text_object.textLine(line)

pdf_file.drawText(text_object)

Bu kod PDF-də hər sətrini ayrıca əlavə edən çoxsətrli mətn bloku yaradır. TextObject uzun mətn üçün rahatdır, çünki avtomatik formatlaşdırmanı təmin edir.

4. Mətnin stilizasiyası üçün abzaslardan istifadə

reportlab.platypus modulundan gələn Paragraph sinfi HTML tag-larını (məsələn, <b>, <i>, <u>) dəstəkləyən stilizə edilmiş mətn əlavə etməyə imkan verir. Paragraph həmçinin hizalama və indentasiyaları dəstəkləyir, bu da onu formatlaşdırılmış mətn yaratmaq üçün ideal edir.

Paragraph ilə abzasların yaradılması

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import SimpleDocTemplate, Paragraph

# PDF qurulumu
doc = SimpleDocTemplate("styled_paragraphs.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []

# Qalın və italic mətn ilə abzas yaradılması
text = "Satış Hesabatı
2023-cü ilin rüblük hesabatı" paragraph = Paragraph(text, styles["Title"]) elements.append(paragraph) # Əsas mətn əlavə edilməsi main_text = """ Bu hesabat sonuncu rüb üçün satış haqqında əsas məlumatları, eləcə də satışın şirkət gəlirinə təsiri haqqında analizləri təqdim edir. """ paragraph = Paragraph(main_text, styles["BodyText"]) elements.append(paragraph) # PDF-in yaradılması doc.build(elements)

Burada biz stilizə edilmiş mətn əlavə etmək üçün Paragraph-dən istifadə edirik, hansı ki, HTML tag-ları (qalın və italic mətn) vasitəsilə stilizasiya edir. getSampleStyleSheet() TitleBodyText kimi əsas stilləri təqdim edir, onları dəyişmək mümkündür.

5. Mətn stillərinin tətbiqi

ReportLab imkan verir ki, siz özünəməxsus stillər yaradıb tənzimləyəsiniz və həmin stilləri mətn formatlaşdırma üçün istifadə edəsiniz. Bu xüsusilə hesabatlar hazırlanarkən faydalıdır, çünki bu zaman başlıqlar, altbaşlıqlar və əsas mətn üçün təkrarlanan stillər istifadə olunur.

Fərdi tərz tənzimlənməsi

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph

# PDF tənzimlənməsi
doc = SimpleDocTemplate("custom_styles.pdf", pagesize=A4)
elements = []

# Fərdi tərzin yaradılması
custom_style = ParagraphStyle(
    name="CustomStyle",
    fontName="Helvetica-Bold",
    fontSize=14,
    leading=18,
    textColor=colors.darkgreen,
    spaceAfter=10,
)

# Fərdi tərz ilə abzas yaradılması
paragraph = Paragraph("Bu, fərdi tərz ilə başlıqdır", custom_style)
elements.append(paragraph)

# Əsas mətnin əlavə edilməsi
default_style = ParagraphStyle(
    name="Default",
    fontName="Helvetica",
    fontSize=12,
    leading=14,
    textColor=colors.black,
    spaceAfter=10,
)
paragraph = Paragraph("Bu, standart tərzdən istifadə edərək əsas mətndir.", default_style)
elements.append(paragraph)

# PDF sənədinin yaradılması
doc.build(elements)

Bu nümunədə biz yaşıl mətn rəngi və daha iri şrift ilə CustomStyle adlı fərdi tərz yaradırıq və bunu başlığa tətbiq edirik.

6. Başlıqlar və mətnlərlə sənədin yaradılması

PDF sənədinin daha strukturlaşdırılmış olmasını təmin etmək üçün hər biri öz başlığı və tərtib edilmiş mətni olan hissələrdən ibarət çox səhifəli bir hesabat yaradıla bilər.

Strukturlaşdırılmış çox səhifəli hesabatın yaradılması

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph, PageBreak

# PDF parametrlərinin təyin edilməsi
doc = SimpleDocTemplate("structured_report.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []

# Başlıq üçün stil
title_style = ParagraphStyle("TitleStyle", parent=styles["Title"], fontSize=18, spaceAfter=12)

# Birinci səhifənin başlığı
title = Paragraph("2023-cü il üzrə satış hesabatı", title_style)
elements.append(title)

# Əsas mətn
main_text = """
Bu hesabat 2023-cü ilin birinci rübü üzrə şirkətin satışları haqqında ətraflı məlumat təqdim edir.
Buraya regionlar, məhsul kateqoriyaları və əsas göstəricilər daxildir.
"""
elements.append(Paragraph(main_text, styles["BodyText"]))

# Yeni səhifəyə keçid
elements.append(PageBreak())

# İkinci səhifənin başlığı
subtitle = Paragraph("Kateqoriyalar üzrə satışların analizi", title_style)
elements.append(subtitle)

# İkinci səhifə üçün mətn
category_text = """
İkinci səhifədə məhsul kateqoriyaları üzrə satış məlumatları təqdim edilir.
Hər bir kateqoriya satış dinamikası və bazardakı dəyişikliklər nəzərə alınaraq təhlil edilmişdir.
"""
elements.append(Paragraph(category_text, styles["BodyText"]))

7. Mətn formatlaşdırılmasının incəlikləri

Şriftlərin və onların ölçülərinin seçilməsi

PDF aləmi - yalnız adsız sənədlər deyil, həm də mətndə özünü ifadə etmə imkanlarıdır. Baxmayaraq ki, reportlab şriftlərin və stillərin sazlanması üçün çoxlu seçimlər təqdim edir, bəzi məhdudiyyətləri də yaddan çıxarmamaq vacibdir. Məsələn, bəzi şriftlər dəstəklənməyə bilər, xüsusən əgər, onların lisenziyalı nüsxələrinə malik deyilsinizsə.

Şriftin sazlanması üçün biz setFont metodundan istifadə etdik, hansı ki, şriftin adını və onun ölçüsünü qəbul edir:

Python

c.setFont("Times-Roman", 12)

Başlıqların stilləşdirilməsi

Bəlkə siz başlıqları seçmək və onları daha nəzərə çarpan etmək istəyərsiniz. Bunu şriftin ölçüsünü artıraraq və ya onu yarıqalın etmək yolu ilə edə bilərsiniz. Diqqət yetirin, biz başlıqlar üçün Helvetica-Bold-dan istifadə etdik.

Mətni düzləşdirilməsi

reportlab-da mətn standart olaraq sol tərəfə düzləşdirilir, amma bunu dəyişə bilərsiniz, mətni genişliyini hesablamaq və mərkəzdə düzləşdirmək üçün metodlardan istifadə edərək. Bu, səhifədə daha mürəkkəb mətn kompozisiyaları yaratmaq üçün faydalıdır.

8. Real tətbiqlər

Mətn və başlıqların PDF-ə əlavə olunmasının faydalı olduğu bəzi ssenarilər:

  • Avtomatlaşdırılmış hesabatlar. Məlumat analizlərinizdən çıxarılan dinamik mətnlərlə hesabatlar yarada bilərsiniz.
  • Mündəricatlı sənədlər. Başlıqların və alt başlıqların əlavə edilməsi sənədlərdə, xüsusilə böyük olanlarda naviqasiyanı asanlaşdırır.
  • Fərdiləşdirilmiş sənədlər. Layihəniz iştirakçılar üçün fərdiləşdirilmiş sənədlər yaratmağa ehtiyac duyursa, məsələn, sertifikatlar və ya dəvətlər, PDF-də mətnin avtomatlaşdırılması olduqca faydalı olacaqdır.

Tipik səhvlər

Bəzən PDF yaradarkən problemlərlə qarşılaşa bilərsiniz. Tez-tez rast gəlinən səhv dəstəklənməyən şriftlərin istifadəsi və ya səhifənin ölçülərini nəzərə almadığınız üçün mətnin düzgün yerləşdirilməməsidir. Skriptinizi bir neçə nümunədə test edin ki, mətnin bütün platformalarda və cihazlarda düzgün göstərildiyinə əmin olun.

Əlavə məlumat və daha mürəkkəb nümunələr üçün ReportLab sənədlərinəPyPDF2 GitHub səhifəsinə baxın, burada istifadə üçün bir çox nümunələr və məsləhətlər tapa bilərsiniz.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION