Πώς να φορτώσετε ένα έγγραφο στο Python

Πώς να φορτώσετε ένα έγγραφο στο Python

Aspose.PDF FOSS για Python φορτώνει ένα PDF από διαδρομή αρχείου, ακατέργαστα bytes ή δυαδική ροή σε ένα αντικείμενο Document που μπορείτε να ελέγξετε και να επεξεργαστείτε. Η βιβλιοθήκη είναι καθαρή Python και εγκαθίσταται με μία μόνο εντολή.

Οδηγός βήμα προς βήμα

Βήμα 2: Εισαγωγή απαιτούμενων κλάσεων

Εισάγετε το Document για να φορτώσετε και να κρατήσετε ένα PDF, καθώς και τις κλάσεις εξαιρέσεων που θα διαχειριστείτε όταν αποτύχει η φόρτωση:

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

Βήμα 3: Φορτώστε ένα PDF από διαδρομή αρχείου

Περάστε μια διαδρομή αρχείου απευθείας στον κατασκευαστή του Document, ή καλέστε το load_from ρητά σε μια υπάρχουσα παρουσία — και τα δύο δέχονται μια διαδρομή, bytes, ή μια δυαδική ροή. Χρησιμοποιήστε το Document ως διαχειριστή περιβάλλοντος ώστε τα υποκείμενα χειριστήρια αρχείων να απελευθερώνονται αυτόματα:

from aspose_pdf import Document

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

Η μορφή κατασκευής Document(source) είναι ισοδύναμη με Document().load_from(source):

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

Βήμα 4: Φόρτωση PDF με κωδικό πρόσβασης

Τanto Document(source, password=...) όσο και Document.load_from(source, password, limits) δέχονται ένα όρισμα password για PDF που κρυπτογραφούνται με κωδικό χρήστη:

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

Αν η πηγή δεν είναι προστατευμένη με κωδικό, παραλείψτε το όρισμα — η μετάδοση του password=None (η προεπιλογή) λειτουργεί και για συνηθισμένα PDF.


Βήμα 5: Διαχείριση εξαιρέσεων φόρτωσης

Ένα αρχείο που λείπει, μη-PDF δεδομένα, κωδικός που λείπει ή είναι λανθασμένος, ή ένα κατεστραμμένο PDF δεν επιστρέφει ποτέ ένα σιωπηρά κενό Document — αντ’ αυτού προκαλεί εξαίρεση. Πιάστε τις συγκεκριμένες κλάσεις εξαιρέσεων για να αντιδράσετε κατάλληλα:

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 και ο αδερφός του PdfMalformedError διαθέτουν και οι δύο τις ιδιότητες message, offset και recoverable, κάτι που είναι χρήσιμο για την καταγραφή ακριβώς πού ένα κατεστραμμένο αρχείο απέτυχε να αναλυθεί. Κατά την επεξεργασία μη αξιόπιστης εισόδου, πιάστε επίσης το PdfResourceLimitException, που προκαλείται όταν ένα έγγραφο υπερβαίνει την προεπιλεγμένη πολιτική ασφαλείας PdfLoadLimits (μέγεθος εισόδου, αριθμός αντικειμένων, μέγεθος αποκωδικοποιημένου ρεύματος και παρόμοια όρια).


Βήμα 7: Απελευθέρωση πόρων εγγράφου

Χρησιμοποιώντας το Document ως διαχειριστή πλαισίου (with Document(...) as document:) κλείνει το έγγραφο αυτόματα όταν το μπλοκ εξέρχεται. Όταν δημιουργείτε ένα Document εκτός ενός μπλοκ with, καλέστε το close() ή το dispose() ρητά μόλις τελειώσετε με αυτό:

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

Κοινά Προβλήματα και Διορθώσεις

InvalidPasswordException αναβλήθηκε παρόλο που δεν πίστευα ότι το αρχείο ήταν κρυπτογραφημένο

Το πηγαίο PDF έχει ορισμένο κωδικό πρόσβασης χρήστη. Επιβεβαιώστε το με την προέλευση του αρχείου, έπειτα περάστε τη σωστή τιμή ως όρισμα password στο Document(...) ή στο load_from(...).

InvalidPdfFileFormatException σε ένα αρχείο που φαίνεται εντάξει

Το αρχείο δεν είναι έγκυρο PDF — μπορεί να είναι μια σελίδα σφάλματος HTML, μια περικομμένη λήψη ή διαφορετικό φορμάτ αποθηκευμένο με επέκταση .pdf. Ανοίξτε το αρχείο σε επεξεργαστή κειμένου και επιβεβαιώστε ότι αρχίζει με %PDF-.

PdfCorruptedError σε ένα αρχείο που ανοίγει σε άλλους προβολείς

Ορισμένα προγράμματα ανάγνωσης PDF επισκευάζουν τη χαλασμένη δομή σιωπηρά. Document προκαλεί PdfCorruptedError για αδιόρθωτη διαφθορά και PdfMalformedError για ανακτήσιμα δομικά προβλήματα — ελέγξτε την ιδιότητα offset στην εξαίρεση για να εντοπίσετε την περιοχή του προβλήματος στο ρεύμα bytes.

PdfResourceLimitException σε ένα μεγάλο ή σύνθετο PDF

Το έγγραφο ξεπέρασε ένα προεπιλεγμένο όριο PdfLoadLimits (μέγεθος εισόδου, αριθμός αντικειμένων, μέγεθος αποκωδικοποιημένου ρεύματος και παρόμοια όρια σχεδιασμένα για προστασία από μη έμπιστη είσοδο). Δημιουργήστε ένα προσαρμοσμένο PdfLoadLimits και περάστε το ως limits= στο Document(...) ή στο load_from(...) εάν το αρχείο είναι αξιόπιστο και τα μεγαλύτερα όρια είναι κατάλληλα.

Ξεχάνοντας να κλείσετε ένα Document ανοίχτηκε εκτός ενός with block

Καλέστε το document.close() (ή το document.dispose()) μόλις τελειώσετε, ή φορτώστε το αρχείο με το with Document(source) as document: ώστε ο καθαρισμός να γίνεται αυτόματα ακόμη και αν προκύψει εξαίρεση μέσα στο μπλοκ.

Συχνές Ερωτήσεις

Τι μπορώ να περάσω ως όρισμα source όταν φορτώνω ένα PDF;

Document(source) και Document.load_from(source, password, limits) δέχονται διαδρομή αρχείου, ακατέργαστο bytes, ή οποιοδήποτε δυαδικό ρεύμα.

Πώς μπορώ να φορτώσω ένα PDF που είναι ήδη στη μνήμη αντί να είναι στο δίσκο;

Περάστε το αντικείμενο bytes απευθείας: Document(pdf_bytes), ή καλέστε document.load_from(pdf_bytes) σε μια υπάρχουσα παρουσία Document.

Απαιτεί η φόρτωση ενός PDF τον σωστό κωδικό πρόσβασης εκ των προτέρων, ή μπορώ να τον ελέγξω πρώτα;

is_encrypted είναι διαθέσιμο μόνο μετά από επιτυχημένη φόρτωση, έτσι ένα κρυπτογραφημένο PDF πρέπει να ανοίξει με το σωστό όρισμα password στην ίδια κλήση. Συλλάβετε το InvalidPasswordException αν χρειάζεται να ζητήσετε κωδικό πρόσβασης διαδραστικά.

Δείτε επίσης

 Ελληνικά