Jak načíst dokument v Python
Aspose.PDF FOSS pro Python načte PDF ze souborové cesty, surových bajtů nebo binárního proudu do objektu Document, který můžete prohlížet a manipulovat s ním. Knihovna je čistý Python a instalujete ji jediným příkazem.
Průvodce krok za krokem
Krok 2: Importujte požadované třídy
Importujte Document pro načtení a uchování PDF, plus třídy výjimek, které budete zpracovávat, když načítání selže:
from aspose_pdf import (
Document,
InvalidPasswordException,
InvalidPdfFileFormatException,
PdfCorruptedError,
PdfParseException,
)Krok 3: Načtěte PDF ze souborové cesty
Předávejte souborovou cestu přímo do konstruktoru Document nebo zavolejte load_from explicitně na existující instanci — oba přijímají cestu, bytes, nebo binární proud. Použijte Document jako správce kontextu, aby se podkladové souborové handly uvolnily automaticky:
from aspose_pdf import Document
with Document("report.pdf") as document:
print(f"Loaded {document.page_count} page(s)")Konstruktorová forma Document(source) je ekvivalentní Document().load_from(source):
document = Document()
document.load_from("report.pdf")
print(f"Loaded {document.page_count} page(s)")
document.close()Krok 4: Načíst PDF chráněné heslem
Jak Document(source, password=...), tak Document.load_from(source, password, limits) přijímají argument password pro PDF šifrovaná uživatelským heslem:
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}")Pokud zdroj není chráněn heslem, argument vynechte — předání password=None (výchozí) funguje i pro běžná PDF.
Krok 5: Zpracovat výjimky při načítání
Chybějící soubor, data, která nejsou PDF, chybějící nebo špatné heslo nebo poškozené PDF nikdy nevrátí tichý prázdný Document — místo toho vyvolá výjimku. Zachyťte konkrétní třídy výjimek a reagujte vhodně:
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 a jeho sourozenec PdfMalformedError oba obsahují vlastnosti message, offset a recoverable, což je užitečné pro zaznamenání přesně, kde selhalo parsování poškozeného souboru. Při zpracování nedůvěryhodného vstupu také zachyťte PdfResourceLimitException, která je vyvolána, když dokument překročí výchozí bezpečnostní politiku PdfLoadLimits (velikost vstupu, počet objektů, velikost dekódovaného proudu a podobné limity).
Krok 7: Uvolnit prostředky dokumentu
Použití Document jako správce kontextu (with Document(...) as document:) automaticky zavře dokument při opuštění bloku. Když vytvoříte Document mimo blok with, zavolejte explicitně close() nebo dispose(), jakmile s ním skončíte:
document = Document()
document.load_from("report.pdf")
try:
print(document.page_count)
finally:
document.close()Běžné problémy a opravy
InvalidPasswordException je vyvolána, i když jsem si nemyslel, že soubor byl zašifrován
Zdrojové PDF má nastavené uživatelské heslo. Ověřte to u původu souboru, poté předávejte správnou hodnotu jako argument password funkcím Document(...) nebo load_from(...).
InvalidPdfFileFormatException na souboru, který vypadá v pořádku
Soubor není platné PDF — může se jednat o chybovou stránku HTML, o oříznuté stažení nebo o jiný formát uložený s příponou .pdf. Otevřete soubor v textovém editoru a ověřte, že začíná %PDF-.
PdfCorruptedError na souboru, který se otevírá v jiných prohlížečích
Některé čtečky PDF tiše opravují poškozenou strukturu. Document vyvolá PdfCorruptedError pro neobnovitelnou korupci a PdfMalformedError pro obnovitelné strukturální problémy — prozkoumejte vlastnost offset výjimky, abyste našli problematickou oblast v bytovém proudu.
PdfResourceLimitException na velkém nebo složitém PDF
Dokument překročil výchozí limit PdfLoadLimits (velikost vstupu, počet objektů, velikost dekódovaného proudu a podobná omezení navržená k ochraně před nedůvěryhodným vstupem). Vytvořte vlastní PdfLoadLimits a předávejte jej jako limits= do Document(...) nebo load_from(...), pokud je soubor důvěryhodný a jsou vhodné vyšší limity.
Zapomenutí zavřít a Document otevřeno mimo a with block
Zavolejte document.close() (nebo document.dispose()) po dokončení, nebo načtěte soubor pomocí with Document(source) as document:, aby úklid proběhl automaticky i v případě, že uvnitř bloku dojde k výjimce.
Často kladené otázky
Co mohu předat jako argument source při načítání PDF?
Document(source) a Document.load_from(source, password, limits) přijímají cestu k souboru, surový bytes nebo libovolný binární proud.
Jak načíst PDF, které je již v paměti místo na disku?
Předávejte objekt bytes přímo: Document(pdf_bytes), nebo zavolejte document.load_from(pdf_bytes) na existující instanci Document.
Vyžaduje načtení PDF správné heslo předem, nebo si ho mohu nejprve ověřit?
is_encrypted je k dispozici až po úspěšném načtení, takže šifrované PDF musí být otevřeno s správným argumentem password ve stejném volání. Zachyťte InvalidPasswordException, pokud potřebujete interaktivně požádat o heslo.