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.