Hogyan töltsünk be egy dokumentumot a Python-ban

Hogyan töltsünk be egy dokumentumot a Python-ban

Aspose.PDF FOSS a Python számára PDF-t tölt be fájlútról, nyers bájtokból vagy bináris adatfolyamból egy Document objektumba, amelyet megtekinthet és módosíthat. A könyvtár tiszta Python, és egyetlen paranccsal telepíthető.

Lépésről-lépésre útmutató

2. lépés: Szükséges osztályok importálása

Importálja a Document elemet a PDF betöltéséhez és tárolásához, valamint a kivétel osztályokat, amelyeket a betöltés sikertelensége esetén kezelni fog:

from aspose_pdf import (
    Document,
    InvalidPasswordException,
    InvalidPdfFileFormatException,
    PdfCorruptedError,
    PdfParseException,
)

3. lépés: PDF betöltése fájlútról

Adjon meg egy fájlútvonalat közvetlenül a Document konstruktorának, vagy hívja meg a load_from metódust kifejezetten egy meglévő példányon – mindkettő elfogad egy útvonalat, bytes, vagy egy bináris adatfolyamot. Használja a Document-t kontextuskezelőként, hogy a mögöttes fájlkezelők automatikusan felszabaduljanak:

from aspose_pdf import Document

with Document("report.pdf") as document:
    print(f"Loaded {document.page_count} page(s)")

A Document(source) konstruktor forma ekvivalens a Document().load_from(source) formával:

document = Document()
document.load_from("report.pdf")
print(f"Loaded {document.page_count} page(s)")
document.close()

4. lépés: Jelszóval védett PDF betöltése

A Document(source, password=...) és a Document.load_from(source, password, limits) is elfogad egy password argumentumot a felhasználói jelszóval titkosított PDF-ekhez:

from aspose_pdf import Document

with Document("locked.pdf", password="secret") as document:
    print(f"Opened encrypted document: {document.page_count} page(s)")
    print(f"Encrypted: {document.is_encrypted}")

Ha a forrás nincs jelszóval védve, hagyja el az argumentumot — a password=None (az alapértelmezett) átadása szintén működik a normál PDF-eknél.


5. lépés: Betöltési kivételek kezelése

Hiányzó fájl, nem PDF adat, hiányzó vagy rossz jelszó, vagy sérült PDF soha nem ad vissza csendben üres Document — helyette kivételt dob. Fogja el a megfelelő kivételosztályokat a megfelelő reagáláshoz:

from aspose_pdf import (
    Document,
    InvalidPasswordException,
    InvalidPdfFileFormatException,
    PdfCorruptedError,
    PdfParseException,
)

try:
    document = Document("report.pdf", password="maybe-wrong")
except InvalidPasswordException:
    print("The PDF is encrypted; supply the correct password.")
except InvalidPdfFileFormatException:
    print("The file is not a valid PDF.")
except PdfCorruptedError as error:
    print(f"Unrecoverable corruption at offset {error.offset}: {error.message}")
except PdfParseException as error:
    print(f"Could not parse the PDF: {error}")
else:
    print(f"Loaded {document.page_count} page(s)")
    document.close()

PdfCorruptedError és testvére, a PdfMalformedError is tartalmazza a message, offset és recoverable tulajdonságokat, ami hasznos a pontos hely naplózásához, ahol egy hibás fájl a feldolgozás során elakadt. Nem megbízható bemenet feldolgozásakor fogja el a PdfResourceLimitException kivételt is, amely akkor kerül dobásra, ha egy dokumentum meghaladja az alapértelmezett PdfLoadLimits biztonsági szabályt (bemeneti méret, objektumszám, dekódolt adatfolyam mérete és hasonló határok).


7. lépés: Dokumentum erőforrások felszabadítása

A Document kontextuskezelőként (with Document(...) as document:) használva automatikusan bezárja a dokumentumot, amikor a blokk kilép. Ha egy Document-t egy with blokk kívül hozol létre, hívd meg kifejezetten a close() vagy a dispose() függvényt, amikor már nincs rá szükséged:

document = Document()
document.load_from("report.pdf")
try:
    print(document.page_count)
finally:
    document.close()

Gyakori problémák és megoldások

InvalidPasswordException felmerül, még akkor is, ha nem gondoltam, hogy a fájl titkosított

A forrás PDF felhasználói jelszóval van védve. Erősítsd meg ezt a fájl eredeténél, majd add meg a helyes értéket a password argumentumként a Document(...) vagy a load_from(...) függvénynek.

InvalidPdfFileFormatException egy fájlon, amely rendben néz ki

A fájl nem érvényes PDF — lehet, hogy egy HTML hibaoldal, egy csonkolt letöltés, vagy egy másik formátum, amelyet .pdf kiterjesztéssel mentettek. Nyisd meg a fájlt egy szövegszerkesztőben, és ellenőrizd, hogy %PDF- karakterrel kezdődik.

PdfCorruptedError egy fájlon, amely más megjelenítőkben megnyílik

Néhány PDF-olvasó csendben javítja a sérült szerkezetet. Document PdfCorruptedError kivételt dob visszaállíthatatlan korrupció esetén, és PdfMalformedError a helyreállítható struktúra-problémák esetén — vizsgáld meg a offset tulajdonságot a kivételen, hogy megtaláld a probléma területét a bájtos áramlásban.

PdfResourceLimitException egy nagy vagy összetett PDF-en

A dokumentum meghaladta az alapértelmezett PdfLoadLimits határt (bemeneti méret, objektumszám, dekódolt adatfolyam mérete, és hasonló korlátok, amelyek a nem megbízható bemenet elleni védelmet szolgálják). Hozz létre egy egyedi PdfLoadLimits objektumot, és add át limits=ként a Document(...) vagy a load_from(...) hívásnak, ha a fájl megbízható, és nagyobb korlátok megfelelőek.

Elfelejtve bezárni egy Document kívül nyitott egy with block

Hívd meg a document.close() (vagy document.dispose()) függvényt, amikor befejezted, vagy töltsd be a fájlt a with Document(source) as document: segítségével, hogy a takarítás automatikusan megtörténjen, még akkor is, ha a blokkban kivétel keletkezik.

Gyakran Ismételt Kérdések

Mit adhatok meg a source argumentumként PDF betöltésekor?

Document(source) és Document.load_from(source, password, limits) elfogad egy fájl útvonalat, nyers bytes-t, vagy bármilyen bináris adatfolyamot.

Hogyan tölthetek be egy már a memóriában lévő PDF-et a lemez helyett?

Add meg a bytes objektumot közvetlenül: Document(pdf_bytes), vagy hívd meg a document.load_from(pdf_bytes) egy meglévő Document példányon.

A PDF betöltéséhez előre szükség van a helyes jelszóra, vagy előbb ellenőrizhetem?

is_encrypted csak sikeres betöltés után érhető el, ezért egy titkosított PDF-et a megfelelő password argumentummal kell megnyitni ugyanabban a hívásban. Kapd el a InvalidPasswordException kivételt, ha interaktívan kell jelszót kérned.

Lásd még:

 Magyar