Hur man laddar ett dokument i Python

Hur man laddar ett dokument i Python

Aspose.PDF FOSS för Python laddar en PDF från en filsökväg, råa byte eller en binär ström till ett Document-objekt som du kan inspektera och manipulera. Biblioteket är ren Python och installeras med ett enda kommando.

Steg-för-steg-guide

Steg 2: Importera nödvändiga klasser

Importera Document för att ladda och hålla en PDF, samt de undantagsklasser du kommer att hantera när en laddning misslyckas:

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

Steg 3: Ladda en PDF från en filväg

Skicka en filsökväg direkt till Document-konstruktorn, eller anropa load_from explicit på en befintlig instans — båda accepterar en sökväg, bytes, eller en binär ström. Använd Document som en kontext-hanterare så att de underliggande filhandtagen släpps automatiskt:

from aspose_pdf import Document

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

Konstruktörsformen Document(source) är ekvivalent med Document().load_from(source):

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

Steg 4: Läs in en lösenordsskyddad PDF

Både Document(source, password=...) och Document.load_from(source, password, limits) accepterar ett password-argument för PDF-filer krypterade med ett användarlösenord:

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}")

Om källan inte är lösenordsskyddad, utelämna argumentet — att skicka password=None (standardvärdet) fungerar även för vanliga PDF-filer.


Steg 5: Hantera inläsningsundantag

En saknad fil, icke-PDF-data, ett saknat eller felaktigt lösenord, eller en korrupt PDF returnerar aldrig ett tyst tomt Document — den kastar istället ett undantag. Fånga de specifika undantagsklasserna för att reagera på rätt sätt:

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 och dess syskon PdfMalformedError innehåller båda egenskaperna message, offset och recoverable, vilket är användbart för att logga exakt var en trasig fil misslyckades med att parsas. Vid bearbetning av opålitlig inmatning, fånga även PdfResourceLimitException, som kastas när ett dokument skulle överskrida standard-PdfLoadLimits säkerhetspolicyn (indatat storlek, objektantal, avkodad strömmens storlek och liknande gränser).


Steg 7: Frigör dokumentresurser

Att använda Document som en context manager (with Document(...) as document:) stänger dokumentet automatiskt när blocket avslutas. När du konstruerar en Document utanför ett with-block, anropa close() eller dispose() explicit när du är klar med den:

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

Vanliga problem och lösningar

InvalidPasswordException utlöses även om jag inte trodde att filen var krypterad

Käll-PDF:en har ett användarlösenord angivet. Bekräfta detta med filens ursprung, och skicka sedan det korrekta värdet som password-argument till Document(...) eller load_from(...).

InvalidPdfFileFormatException på en fil som ser bra ut

Filen är inte en giltig PDF — den kan vara en HTML fel sida, en avkortad nedladdning, eller ett annat format sparat med en .pdf-extension. Öppna filen i en textredigerare och bekräfta att den börjar med %PDF-.

PdfCorruptedError på en fil som öppnas i andra visare

Vissa PDF-läsare reparerar trasig struktur tyst. Document kastar PdfCorruptedError för oåterhämtbar korruption och PdfMalformedError för återhämtbara strukturella problem — inspektera egenskapen offset på undantaget för att lokalisera problemområdet i bytestömmen.

PdfResourceLimitException på en stor eller komplex PDF

Dokumentet överskred en standard PdfLoadLimits gräns (indata storlek, objektantal, avkodad strömmens storlek och liknande begränsningar avsedda att skydda mot otillförlitlig indata). Skapa en anpassad PdfLoadLimits och skicka den som limits= till Document(...) eller load_from(...) om filen är betrodd och större gränser är lämpliga.

Att glömma att stänga en Document öppnad utanför en with block

Anropa document.close() (eller document.dispose()) när du är klar, eller läs in filen med with Document(source) as document: så att städning sker automatiskt även om ett undantag uppstår inom blocket.

Vanliga frågor

Vad kan jag skicka som source argument när jag läser in en PDF?

Document(source) och Document.load_from(source, password, limits) accepterar en filsökväg, rå bytes, eller någon binär ström.

Hur laddar jag en PDF som redan finns i minnet istället för på disk?

Skicka bytes-objektet direkt: Document(pdf_bytes), eller anropa document.load_from(pdf_bytes) på en befintlig Document-instans.

Kräver inläsning av en PDF rätt lösenord i förväg, eller kan jag kontrollera först?

is_encrypted är endast tillgänglig efter en lyckad inläsning, så en krypterad PDF måste öppnas med rätt password-argument i samma anrop. Fånga InvalidPasswordException om du behöver be om ett lösenord interaktivt.

Se även

 Svenska