1. Hesabatlar üçün PDF-sənədlərin strukturu
Gəlin PDF-faylların saxlanmasını və strukturlaşdırılmasını öyrənməyə başlayaq, belə ki, sizin hesabatlarınız peşəkar dizayner tərəfindən yaradılmış kimi görünəcək.
Gəlin əsaslardan başlayaq. Bildiyiniz kimi, yaxşı hesabatlar təkcə faydalı məlumatlara malik olmamalı, həmçinin qavranılması asan olmalıdır. Bu, onların düzgün struktura ehtiyacı olduğunu bildirir. Gəlin hesabatlarınızın həm məzmunlu, həm də estetik baxımdan gözəl olması üçün nə etməli olduğumuzu izah edək.
PDF-i düzgün təşkil etmək və strukturlaşdırmaq
Sənədin strukturu kod blokunun planına bənzəyir, amma mətn dünyasında. Yaxşı struktur özündə aşağıdakını ehtiva edir:
- Mündəricat: Sənəddə nələrin olduğunu və onları harada tapmaq lazım olduğunu anlamağa kömək edir. Əgər sizin böyük hesabatınız varsa, mündəricat sizin ən yaxşı dostunuzdur.
- Bölmələr və Altbölmələr: Məlumatın məntiqi ardıcıllığı oxucunun müəllifin düşüncələrini izləməsinə kömək edir. Həyatda olduğu kimi: əvvəlcə başlanğıc, sonra kulminasiya və sonda nəticə.
- Vizual elementlər: Cədvəllər, qrafiklər və şəkillər bəzən bir səhifəlik mətnin dediyindən daha çoxunu deyə bilər.
Rahat naviqasiya üçün mündəricat və bölmələrin yaradılması
Müntəricatlar və bölmələrin yaradılması hesabatınızın böyük bir mətn yığınına çevrilməsinin qarşısını alır. Məlumatı məntiqi bloklara ayırın və başlıqları unutmayın.
from PyPDF2 import PdfWriter, PdfReader
# Yeni PDF-sənəd yaradırıq
writer = PdfWriter()
# Boş səhifə əlavə edirik
writer.add_blank_page(width=210, height=297) # Standart A4 formatı
# PDF-i fayla yazırıq
with open("report.pdf", "wb") as f:
writer.write(f)
2. Hesabatların PDF formatında yaradılması
İndi, hesabatı necə strukturlaşdırmaq lazım olduğunu bildiyimiz zaman, onun yaradılmasına keçməyin zamanı gəldi. PyPDF2 — bu çətin işdə sizin dostunuzdur.
PyPDF2 istifadə edərək məlumatlardan hesabatların yaradılması
Məlumatlardan hesabatların yaradılması — sadəcə kopyalamaq və yapışdırmaq deyil. Sənədləriniz sizin pişiyiniz kimi "canlı" olmalıdır, işləmağa çalışdığınız vaxt sizi narahat edən. PyPDF2 sizə məlumatları çıxarmağa, sənədə əlavə etməyə və hətta onların görünüşünü fərdiləşdirməyə kömək edir.
import PyPDF2
# Mövcud olan PDF faylını açırıq
with open('source.pdf', 'rb') as read_file:
reader = PdfReader(read_file)
writer = PdfWriter()
# Səhifələri yeni fayla kopyalayırıq
for page in reader.pages:
writer.add_page(page)
# Başlıq əlavə edirik
writer.add_blank_page()
page = writer.pages[-1]
page.content = """Salam! Bu mənim hesabatımdır!""" # Səhv!!
# Yeni fayla yazırıq
with open('structured_report.pdf', 'wb') as write_file:
writer.write(write_file)
Təəssüf ki, bu kod işləməyəcək. PyPDF2 səhifənin məzmunu ilə işləməyi dəstəkləmir, hətta sadə bir mətn əlavə etmək belə mümkün deyil. Əgər mövcud bir PDF-ə mətn əlavə etmək lazımdırsa, `ReportLab` istifadə edə bilərsiniz.
3. `ReportLab` istifadəsi
Bu düzəliş edilmiş nümunədə PyPDF2 ilə PDF yaradacağıq və mətn əlavə etmək üçün `ReportLab` istifadə edəcəyik. Sonra nəticəni bir PDF-də birləşdirəcəyik.
Mətni əlavə etmək üçün `ReportLab` istifadə edərək düzəliş edilmiş kod
import PyPDF2
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
# ReportLab vasitəsilə başlıq ilə fayl yaradırıq
title_pdf = "title_page.pdf"
c = canvas.Canvas(title_pdf, pagesize=A4)
c.drawString(100, 800, "Salam! Bu mənim hesabatımdır!")
c.save()
# Birləşdirilmiş PDF yaradırıq
with open("source.pdf", "rb") as source_file, open(title_pdf, "rb") as title_file:
reader_source = PyPDF2.PdfReader(source_file)
reader_title = PyPDF2.PdfReader(title_file)
writer = PyPDF2.PdfWriter()
# Başlıq səhifəsini əlavə edirik
writer.add_page(reader_title.pages[0])
# Mənbə fayldan səhifələri kopyalayırıq
for page in reader_source.pages:
writer.add_page(page)
# Yeni başlıq olan PDF faylı saxlayırıq
with open("structured_report.pdf", "wb") as output_file:
writer.write(output_file)
print("Hesabat uğurla yaradıldı və 'structured_report.pdf' kimi saxlanıldı.")
Düzəlişlərin izahı:
- Başlıq səhifəsinin yaradılması: "Salam! Bu mənim hesabatımdır!" mətnini ehtiva edən bir PDF faylı yaratmaq üçün `ReportLab` istifadə edirik.
- PDF birləşdirilməsi: `PyPDF2` vasitəsilə başlıq səhifəsini və `source.pdf`-dən qalan səhifələri əlavə edirik.
- Son faylın saxlanması: Birləşdirilmiş PDF faylını `structured_report.pdf` kimi saxlayırıq.
Daha yaxşı strukturlaşdırma üçün başlıqlar və bölmələr əlavə edilməsi
İndi biz artıq sənədin əsasına sahibik, bir az struktur əlavə edək. Başlıqlar və alt başlıqlar məlumat meşəsində yolunuzu itirməməyə kömək edəcəkdir. PyPDF2 səhifələri daxil etməyə imkan verir, lakin əgər fonts tənzimləməsi kimi daha mürəkkəb şeylərə ehtiyacınız varsa, `ReportLab` kitabxanasına nəzər salmaq lazımdır.
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def create_pdf(filename):
# PDF canvas yaradırıq
c = canvas.Canvas(filename, pagesize=letter)
text = c.beginText(40, 750)
# Başlıq
text.setFont("Helvetica-Bold", 18)
text.textLine("Layihə üzrə hesabat 'SuperGizli'")
# Alt başlıq
text.setFont("Helvetica", 14)
text.textLine("Fəsillər:")
text.textLine("1. Giriş")
text.textLine("2. Məlumatların analizi")
text.textLine("3. Nəticə")
c.drawText(text)
c.save()
create_pdf("detailed_report.pdf")
Xətalar və çətinliklər
Hər hansı bir proqramlaşdırmada olduğu kimi, PDF sənədlərinin işlənməsində də öz çətinlikləri var. Əsas problemlərdən biri səhifə indekslərinin düzgün istifadəsidir. PyPDF2-də, eləcə də ümumiyyətlə Python-da, səhifə nömrələməsi sıfırdan başlayır. Dəqiq olun ki, təsadüfən hesabatınıza səhv səhifələr əlavə etməyəsiniz.
Problem yarada biləcək digər bir məsələ isə mətnlərin düzgün kodlaşdırılmamasıdır. PDF sənədlər fərqli formatlarda kodlaşdırılmış mətnlər saxlaya bilər. Kodunuzun simvolları düzgün işləyə biləcəyinə əmin olun, xüsusilə də hesabatınız bir neçə dildə olacaqsa.
GO TO FULL VERSION