Εισαγωγή

Aspose.PDF FOSS για Python περιλαμβάνει ένα υποπακέτο aspose_pdf.generated με τέσσερα modules: document.py, forms.py, pdfa.py και security.py. Κανένα από αυτά δεν επανεξάγεται από το πακέτο υψηλότερου επιπέδου aspose_pdf, έτσι κάθε κλάση σε αυτόν τον οδηγό εισάγεται με το πλήρες διακριτικό μονοπάτι — from aspose_pdf.generated.document import Document, όχι from aspose_pdf import Document.

Τα τέσσερα modules ακολουθούν δύο διαφορετικές προσεγγίσεις. Τα generated.document, generated.forms και generated.pdfa καθένα ορίζει τις δικές του κλάσεις: ανεξάρτητες υλοποιήσεις που αντικατοπτρίζουν τη δομή των Document, UnsignedContent/UnsignedContentAbsorber και PdfAValidateOptions/PdfAValidationResult του κύριου πακέτου — χρήσιμες για κώδικα που γράφτηκε ενάντια σε αυτή τη δομή ονοματοχώρου, αλλά αποτελούν ένα πραγματικό, ξεχωριστό σύνολο κλάσεων αντί για ψευδώνυμα. Αντίθετα, το generated.security δεν κάνει καμία επανυλοποίηση: εισάγει τα CompromiseCheckResult, SignaturesCompromiseDetector και τα enums επαλήθευσης απευθείας από τα aspose_pdf.security και aspose_pdf.validation και τα επανεξάγει, έτσι και οι δύο διαδρομές εισαγωγής οδηγούν στο ίδιο αντικείμενο κλάσης.

Αυτός ο οδηγός καλύπτει και τα τέσσερα, και είναι σαφής σχετικά με το πού μια κλάση generated συμπεριφέρεται διαφορετικά από το ισοδύναμο της στο κύριο πακέτο με το ίδιο όνομα — τα Document και UnsignedContentAbsorber υπάρχουν και στα δύο μέρη με δύο διαφορετικές υλοποιήσεις, κάτι που είναι ακριβώς το είδος του ζητήματος που είναι εύκολο να γίνει λάθος όταν γίνεται εισαγωγή μόνο με το όνομα.

Aspose.PDF FOSS για Python είναι ένα πακέτο Python, aspose-pdf-foss-for-python, που κυκλοφορεί υπό την άδεια MIT, απαιτώντας Python 3.11 ή νεότερη έκδοση. Το όνομα του κορυφαίου module είναι aspose_pdf; δείτε την ενότητα Γρήγορη Έναρξη παρακάτω για εγκατάσταση. Το βασικό πακέτο εξαρτάται μόνο από τα cryptography και asn1crypto; τα προαιρετικά πρόσθετα προσθέτουν αποκωδικοποίηση εικόνας με βάση το Pillow, υποστήριξη γραμματοσειρών WOFF2 με βάση το Brotli, και διάταξη σύνθετου κειμένου με βάση το HarfBuzz.


Κύρια Χαρακτηριστικά

Μια Δεύτερη Υλοποίηση Εγγράφου

aspose_pdf.generated.document.Document υλοποιεί τον ίδιο βασικό κύκλο ζωής με το κύριο aspose_pdf.Documentload_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten(), και validate()/check() — πάνω από την ίδια μηχανή aspose_pdf.engine.simple_pdf.SimplePdf. Αντιγράφει ένα υποσύνολο του κύριου Document: δεν διαθέτει δημιουργία σελίδων σε στυλ pages.add(), δεν έχει form/outlines/attachments, και δεν υπάρχει render_page(). Επειδή το όνομα της κλάσης συγκρούεται με το Document του κύριου πακέτου, εισάγετέ το με ψευδώνυμο όταν και τα δύο χρειάζονται στο ίδιο module.

from aspose_pdf import Document
from aspose_pdf.generated.document import Document as CompatDocument

with Document() as document:
    document.pages.add()
    document.save("source.pdf")

compat = CompatDocument()
compat.load_from("source.pdf")
print(compat.page_count, compat.is_encrypted)

compat.optimize(compress_images=True)
compat.save("optimized.pdf", overwrite=True)
compat.dispose()

Συσκευασία Μη Υπογεγραμμένου Περιεχομένου

aspose_pdf.generated.forms.UnsignedContentAbsorber και UnsignedContent παρέχουν ένα container για μη υπογεγραμμένα πεδία φόρμας, σελίδες και σημειώσεις. Αυτό διαφέρει από το ανώτερο aspose_pdf.UnsignedContentAbsorber(document), το οποίο παίρνει ένα πραγματικό Document και φιλτράρει τα form_fields/annotations του για αντικείμενα των οποίων το χαρακτηριστικό is_signed/signed είναι ψευδές. Η έκδοση generated.forms δεν δέχεται κανένα έγγραφο — το extract() απλώς πακετάρει ό,τι pages, form_fields και annotations του περάσετε ως keyword arguments σε μια παρουσία UnsignedContent, κάτι που είναι χρήσιμο όταν τα μη υπογεγραμμένα στοιχεία έχουν ήδη συλλεχθεί αλλού και χρειάζονται μόνο το κοινό container και τους add_page()/remove_page()-style mutators.

from aspose_pdf.generated.forms import UnsignedContentAbsorber

absorber = UnsignedContentAbsorber()
content = absorber.extract(
    form_fields=["signature_field", "initials_field"],
    annotations=["review_stamp"],
)
print(absorber.has_extracted(), content.form_fields, content.annotations)

content.add_page("page-1")
absorber.reset()
print(absorber.get_extracted())

Επιλογές Επικύρωσης PDF/A και Αποτελέσματα

aspose_pdf.generated.pdfa.PdfAValidateOptions συλλέγει τις ρυθμίσεις επικύρωσης και τις πηγές εισόδου· PdfAValidationResult συλλέγει το αποτέλεσμα. Το PdfAValidateOptions.add_input() ελέγχει μια διαδρομή string με το Path.exists() πριν την αποδεχτεί και εγείρει το PdfIOException εάν το αρχείο λείπει, ώστε ο καλούντας να μάθει αμέσως για μια λανθασμένη διαδρομή εισόδου αντί να το ανακαλύψει κατά τη διάρκεια της επικύρωσης.

from aspose_pdf import Document
from aspose_pdf.exceptions import PdfIOException
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

with Document() as document:
    document.pages.add()
    document.save("candidate.pdf")

options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
print(options.get_options(), options.inputs)

try:
    options.add_input("missing.pdf")
except PdfIOException as error:
    print(f"rejected: {error}")

result = PdfAValidationResult()
result.add_error("Missing /OutputIntent for PDF/A-2b")
print(result.is_valid, result.to_dict())

Εξαγόμενοι εκ νέου Τύποι Ασφάλειας και Επικύρωσης

aspose_pdf.generated.security εισάγει τα CompromiseCheckResult και SignaturesCompromiseDetector απευθείας από το aspose_pdf.security, και τα CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult και ValidationStatus από το aspose_pdf.validation. Σε αντίθεση με τα Document και UnsignedContentAbsorber, δεν υπάρχει ανεξάρτητη επανεφαρμογή εδώ — και οι δύο διαδρομές εισαγωγής επιστρέφουν το ίδιο αντικείμενο.

from aspose_pdf.generated.security import SignaturesCompromiseDetector
from aspose_pdf.security import SignaturesCompromiseDetector as CanonicalDetector

assert SignaturesCompromiseDetector is CanonicalDetector

detector = SignaturesCompromiseDetector(document=None)
result = detector.check()
print(result.compromised, result.reasons)

Γρήγορη Έναρξη

Εγκαταστήστε το πακέτο, στη συνέχεια δημιουργήστε ένα έγγραφο με το κύριο Document, αποθηκεύστε το και εκτελέστε το με τις επιλογές generated.pdfa και τα αντικείμενα αποτελεσμάτων.

git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .
from aspose_pdf import Document
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

with Document() as document:
    page = document.pages.add()
    page.add_text("PDF/A candidate", x=72, y=740, font_size=20)
    document.save("candidate.pdf")

options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")

result = PdfAValidationResult()
if not options.inputs:
    result.add_error("No inputs registered")

print(result.to_dict())

Υποστηριζόμενες μορφές

ΜορφήΕπέκτασηΑνάγνωσηΕγγραφή
PDFpdfΝαιΝαι

Η ανάγνωση και η εγγραφή PDF είναι Aspose.PDF FOSS για τη βασική λειτουργία του Python. Κάθε κλάση σε αυτόν τον οδηγό — το κύριο Document, ο καθρέφτης generated.document.Document, και οι βοηθοί PDF/A — λειτουργεί σε είσοδο και έξοδο PDF μέσω της κοινής μηχανής SimplePdf; το aspose_pdf.generated αλλάζει ποια κλάση εισάγετε, όχι ποια μορφή αρχείου επεξεργάζεται.


Ανοιχτός κώδικας & Αδειοδότηση

Aspose.PDF FOSS για το Python κυκλοφορεί υπό την άδεια MIT: χωρίς περιορισμούς χρήσης, χωρίς χρεώσεις χρόνου εκτέλεσης και χωρίς απαιτήσεις εγγραφής για εμπορική ή προσωπική χρήση. Ο πηγαίος κώδικας φιλοξενείται στο github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, και το πακέτο δημοσιεύεται στο PyPI ως aspose-pdf-foss-for-python.


Ξεκινώντας

Σχετικοί Πόροι