Cum să încărcați un document în Python
Aspose.PDF FOSS pentru Python încarcă un PDF dintr-o cale de fișier, octeți brut sau un flux binar într-un obiect Document pe care îl puteți inspecta și manipula. Biblioteca este pur Python și se instalează cu o singură comandă.
Ghid pas cu pas
Pasul 2: Importați clasele necesare
Importați Document pentru a încărca și păstra un PDF, plus clasele de excepție pe care le veți gestiona când încărcarea eșuează:
from aspose_pdf import (
Document,
InvalidPasswordException,
InvalidPdfFileFormatException,
PdfCorruptedError,
PdfParseException,
)Pasul 3: Încărcați un PDF dintr-o cale de fișier
Transmiteți o cale de fișier direct constructorului Document, sau apelați load_from explicit pe o instanță existentă — ambele acceptă o cale, bytes, sau un flux binar. Utilizați Document ca manager de context pentru ca descriptorii de fișier subiacenți să fie eliberați automat:
from aspose_pdf import Document
with Document("report.pdf") as document:
print(f"Loaded {document.page_count} page(s)")Forma constructorului Document(source) este echivalentă cu Document().load_from(source):
document = Document()
document.load_from("report.pdf")
print(f"Loaded {document.page_count} page(s)")
document.close()Pasul 4: Încarcă un PDF protejat prin parolă
Atât Document(source, password=...), cât și Document.load_from(source, password, limits) acceptă un argument password pentru PDF-urile criptate cu o parolă de utilizator:
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}")Dacă sursa nu este protejată prin parolă, omite argumentul — transmiterea lui password=None (valoarea implicită) funcționează și pentru PDF-urile obișnuite.
Pasul 5: Gestionează excepțiile de încărcare
Un fișier lipsă, date ne-PDF, o parolă lipsă sau incorectă, sau un PDF corupt nu returnează niciodată un Document gol în tăcere — aruncă în schimb o excepție. Capturează clasele de excepție specifice pentru a reacționa în mod corespunzător:
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 și fratele său PdfMalformedError conțin ambele proprietățile message, offset și recoverable, ceea ce este util pentru a înregistra exact unde a eșuat parsarea unui fișier defect. Când procesezi intrări neîncredere, capturează și PdfResourceLimitException, care este aruncată când un document ar depăși politica de siguranță implicită PdfLoadLimits (dimensiunea intrării, numărul de obiecte, dimensiunea fluxului decodat și limite similare).
Pasul 7: Eliberează resursele documentului
Folosind Document ca manager de context (with Document(...) as document:) închide documentul automat când blocul se încheie. Când construiești un Document în afara unui bloc with, apelează explicit close() sau dispose() odată ce ai terminat cu el:
document = Document()
document.load_from("report.pdf")
try:
print(document.page_count)
finally:
document.close()Probleme comune și remedii
InvalidPasswordException este generat chiar dacă nu am considerat că fișierul era criptat
PDF-ul sursă are setată o parolă de utilizator. Confirmă acest lucru cu sursa fișierului, apoi furnizează valoarea corectă ca argument password pentru Document(...) sau load_from(...).
InvalidPdfFileFormatException pe un fișier care pare în regulă
Fișierul nu este un PDF valid — poate fi o pagină de eroare HTML, un download trunchiat sau un format diferit salvat cu extensia .pdf. Deschide fișierul într-un editor de text și confirmă că începe cu %PDF-.
PdfCorruptedError pe un fișier care se deschide în alte vizualizatoare
Unii cititori PDF repară structura deteriorată în tăcere. Document ridică PdfCorruptedError pentru corupție irecuperabilă și PdfMalformedError pentru probleme structurale recuperabile — inspectați proprietatea offset din excepție pentru a localiza zona problematică în fluxul de octeți.
PdfResourceLimitException pe un PDF mare sau complex
Documentul a depășit o limită PdfLoadLimits implicită (dimensiunea intrării, numărul de obiecte, dimensiunea fluxului decodat și limite similare concepute pentru a proteja împotriva intrărilor neîncredere). Construiți un PdfLoadLimits personalizat și transmiteți-l ca limits= către Document(...) sau load_from(...) dacă fișierul este de încredere și limitele mai mari sunt adecvate.
Uitarea închiderii unui Document deschis în afara unui with block
Apelați document.close() (sau document.dispose()) când ați terminat, sau încărcați fișierul cu with Document(source) as document: astfel încât curățarea să se efectueze automat chiar dacă apare o excepție în interiorul blocului.
Întrebări frecvente
Ce pot transmite ca argument source la încărcarea unui PDF?
Document(source) și Document.load_from(source, password, limits) acceptă o cale de fișier, raw bytes, sau orice flux binar.
Cum pot încărca un PDF care este deja în memorie în loc de pe disc?
Transmite obiectul bytes direct: Document(pdf_bytes), sau apelează document.load_from(pdf_bytes) pe o instanță existentă de Document.
Încărcarea unui PDF necesită parola corectă de la început sau pot verifica mai întâi?
is_encrypted este disponibil doar după o încărcare reușită, astfel încât un PDF criptat trebuie deschis cu argumentul password corect în același apel. Capturează InvalidPasswordException dacă trebuie să soliciți o parolă interactiv.