Comment charger un document dans Python

Comment charger un document dans Python

Aspose.PDF FOSS for Python charge un PDF à partir d’un chemin de fichier, d’octets bruts ou d’un flux binaire dans un objet Document que vous pouvez inspecter et manipuler. La bibliothèque est pure Python et s’installe avec une seule commande.

Guide étape par étape

Étape 2: Importer les classes requises

Importez Document pour charger et conserver un PDF, ainsi que les classes d’exception que vous gérerez lorsqu’un chargement échoue :

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

Étape 3: Charger un PDF à partir d’un chemin de fichier

Passez un chemin de fichier directement au constructeur Document, ou appelez load_from explicitement sur une instance existante — les deux acceptent un chemin, bytes, ou un flux binaire. Utilisez Document comme gestionnaire de contexte afin que les descripteurs de fichiers sous-jacents soient libérés automatiquement :

from aspose_pdf import Document

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

La forme du constructeur Document(source) est équivalente à Document().load_from(source) :

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

Étape 4: Charger un PDF protégé par mot de passe

À la fois Document(source, password=...) et Document.load_from(source, password, limits) acceptent un argument password pour les PDF chiffrés avec un mot de passe utilisateur:

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

Si la source n’est pas protégée par un mot de passe, omettez l’argument — passer password=None (la valeur par défaut) fonctionne également pour les PDF ordinaires.


Étape 5: Gérer les exceptions de chargement

Un fichier manquant, des données non-PDF, un mot de passe absent ou incorrect, ou un PDF corrompu ne renvoie jamais un Document silencieusement vide — il lève plutôt une exception. Capturez les classes d’exception spécifiques pour réagir de manière appropriée:

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 et son homologue PdfMalformedError possèdent tous deux les propriétés message, offset et recoverable, ce qui est utile pour consigner exactement où un fichier défectueux a échoué à être analysé. Lors du traitement d’entrées non fiables, capturez également PdfResourceLimitException, qui est levée lorsqu’un document dépasserait la politique de sécurité PdfLoadLimits par défaut (taille d’entrée, nombre d’objets, taille du flux décodé, et limites similaires).


Étape 7: Libérer les ressources du document

Utiliser Document comme gestionnaire de contexte (with Document(...) as document:) ferme le document automatiquement lorsque le bloc se termine. Lorsque vous créez un Document en dehors d’un bloc with, appelez close() ou dispose() explicitement une fois que vous avez terminé avec celui-ci :

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

Problèmes courants et solutions

InvalidPasswordException est déclenchée même si je ne pensais pas que le fichier était chiffré

Le PDF source a un mot de passe utilisateur défini. Vérifiez cela auprès de la provenance du fichier, puis transmettez la valeur correcte comme argument password à Document(...) ou load_from(...).

InvalidPdfFileFormatException sur un fichier qui semble correct

Le fichier n’est pas un PDF valide — il peut s’agir d’une page d’erreur HTML, d’un téléchargement tronqué ou d’un format différent enregistré avec une extension .pdf. Ouvrez le fichier dans un éditeur de texte et vérifiez qu’il commence par %PDF-.

PdfCorruptedError sur un fichier qui s’ouvre dans d’autres visionneuses

Certains lecteurs PDF réparent la structure endommagée silencieusement. Document lève PdfCorruptedError pour une corruption irrécupérable et PdfMalformedError pour des problèmes structurels récupérables — inspectez la propriété offset de l’exception pour localiser la zone problématique dans le flux d’octets.

PdfResourceLimitException sur un PDF volumineux ou complexe

Le document a dépassé une limite PdfLoadLimits par défaut (taille d’entrée, nombre d’objets, taille du flux décodé, et limites similaires conçues pour protéger contre les entrées non fiables). Créez un PdfLoadLimits personnalisé et transmettez-le comme limits= à Document(...) ou load_from(...) si le fichier est fiable et que des limites plus élevées sont appropriées.

Oublier de fermer un Document ouvert en dehors d’un with block

Appelez document.close() (ou document.dispose()) une fois terminé, ou chargez le fichier avec with Document(source) as document: afin que le nettoyage se fasse automatiquement même si une exception se produit à l’intérieur du bloc.

Foire aux questions

Que puis-je passer comme argument source lors du chargement d’un PDF?

Document(source) et Document.load_from(source, password, limits) acceptent un chemin de fichier, du bytes brut, ou tout flux binaire.

Comment charger un PDF déjà en mémoire au lieu d’être sur le disque?

Passez l’objet bytes directement : Document(pdf_bytes), ou appelez document.load_from(pdf_bytes) sur une instance Document existante.

Le chargement d’un PDF nécessite-t-il le mot de passe correct dès le départ, ou puis-je vérifier d’abord?

is_encrypted n’est disponible qu’après un chargement réussi, donc un PDF crypté doit être ouvert avec l’argument password correct dans le même appel. Capturez InvalidPasswordException si vous devez demander un mot de passe de façon interactive.

Voir aussi

 Français