Last modified: June 15, 2024

This article is written in: 馃嚨馃嚤

Manipulacja i analiza plik贸w PDF

Praca z plikami PDF w Pythonie jest mo偶liwa dzi臋ki kilku dost臋pnym bibliotekom. Jednym z najpopularniejszych narz臋dzi s艂u偶膮cych do tego celu jest PyPDF2.

Instalacja biblioteki PyPDF2

Aby rozpocz膮膰 prac臋 z PyPDF2, najpierw trzeba j膮 zainstalowa膰. Mo偶na to zrobi膰 przy pomocy mened偶era pakiet贸w pip:

pip install pypdf2

Otwieranie pliku PDF

Korzystaj膮c z PyPDF2, mo偶emy 艂atwo otworzy膰 i przeczyta膰 plik PDF:

from PyPDF2 import PdfFileReader

# Otwieranie pliku PDF
with open('plik.pdf', 'rb') as plik:
    czytnik = PdfFileReader(plik)

'rb' w funkcji open oznacza tryb "odczyt binarny", kt贸ry jest wymagany do czytania plik贸w PDF.

Eksploracja informacji o pliku

Dzi臋ki PyPDF2 mo偶emy tak偶e uzyska膰 r贸偶ne informacje o pliku PDF, takie jak:

informacje = czytnik.getDocumentInfo()
print(f"Ilo艣膰 stron: {czytnik.getNumPages()}")
print(f"Autor: {informacje.author}")
print(f"Tytu艂: {informacje.title}")

Eksploracja zawarto艣ci pliku PDF

Aby uzyska膰 dost臋p do tre艣ci strony w pliku PDF, mo偶emy skorzysta膰 z metody getPage(), kt贸ra zwraca obiekt PageObject reprezentuj膮cy dan膮 stron臋. Natomiast metoda getNumPages() informuje nas o liczbie stron w dokumencie.

Poni偶szy fragment kodu prezentuje, jak wy艣wietli膰 zawarto艣膰 wszystkich stron pliku PDF:

liczba_stron = czytnik.getNumPages()

for nr_strony in range(liczba_stron):
    strona = czytnik.getPage(nr_strony)
    tekst = strona.extractText()
    print(tekst)

Modyfikowanie dokument贸w PDF

Je艣li chcemy dokona膰 modyfikacji w pliku PDF, mo偶emy skorzysta膰 z obiektu PdfFileWriter dost臋pnego w module PyPDF2. Umo偶liwia on dodawanie nowych stron, usuwanie istniej膮cych czy wprowadzanie innych zmian.

Przyk艂ad poni偶ej przedstawia, jak doda膰 now膮 stron臋 z tekstem "Hello, World!" do dokumentu:

from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from io import BytesIO

# Utworzenie nowej strony
packet = BytesIO()
can = canvas.Canvas(packet, pagesize=A4)
can.drawString(100, 750, "Hello, World!")
can.save()

# Przeczytanie nowej strony
packet.seek(0)
new_pdf = PdfFileReader(packet)
writer = PdfFileWriter()
writer.addPage(new_pdf.getPage(0))

# Zapisanie nowego pliku PDF
with open('nowy_plik.pdf', 'wb') as plik:
    writer.write(plik)

艁膮czenie wielu plik贸w PDF w jeden

Je艣li chcemy po艂膮czy膰 wiele plik贸w PDF w jeden dokument, mo偶emy u偶y膰 PdfFileMerger. Poni偶ej znajduje si臋 fragment kodu, kt贸ry demonstruje, jak to zrobi膰:

from PyPDF2 import PdfFileMerger
import glob

pliki_pdf = glob.glob('*.pdf')
merger = PdfFileMerger()

for pdf in pliki_pdf:
    with open(pdf, 'rb') as plik:
        merger.append(plik)

with open('polaczony_dokument.pdf', 'wb') as wyjsciowy_plik:
    merger.write(wyjsciowy_plik)

Zwr贸膰 uwag臋, 偶e przy otwieraniu plik贸w u偶ywamy kontekstu with, aby zapewni膰 prawid艂owe zarz膮dzanie zasobami i zamkni臋cie plik贸w po ich u偶yciu.

Spis Tre艣ci

    Manipulacja i analiza plik贸w PDF
    1. Instalacja biblioteki PyPDF2
    2. Otwieranie pliku PDF
    3. Eksploracja informacji o pliku
    4. Eksploracja zawarto艣ci pliku PDF
    5. Modyfikowanie dokument贸w PDF
    6. 艁膮czenie wielu plik贸w PDF w jeden