Εργασία με τη Δημιουργημένη Συμβατότητα API
Χρήση της Δημιουργημένης Συμβατότητας API
Aspose.PDF FOSS για Python εκδίδει μια δεύτερη, μικρότερη επιφάνεια API κάτω από το υποπακέτο aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent και UnsignedContentAbsorber, και generated.pdfa.PdfAValidateOptions και PdfAValidationResult. Κάθε μία από αυτές τις κλάσεις μοιράζεται το όνομά της με μια κλάση στην κύρια API της βιβλιοθήκης (aspose_pdf.Document, aspose_pdf.UnsignedContent, κ.λπ.), αλλά είναι ξεχωριστές, ανεξάρτητα ορισμένες κλάσεις με περιορισμένη επιφάνεια μεθόδων. Υπάρχουν ως αυτόνομο στρώμα συμβατότητας — πάντα εισάγετέ τις μέσω της πλήρους διαδρομής aspose_pdf.generated.* ώστε να γνωρίζετε ποια καλείτε.
Κύκλος ζωής εγγράφου μέσω του δημιουργημένου Document
generated.document.Document υποστηρίζει τον βασικό κύκλο ζωής εγγράφου: φόρτωση, αποθήκευση, βασική βελτιστοποίηση, κρυπτογράφηση και επικύρωση. Οι περισσότερες ιδιότητές του είναι τύπου Any αντί για τους πιο πλούσιους τύπους που εκτίθενται στην κύρια κλάση Document.
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.optimize(compress_images=True)
doc.optimize_resources(remove_unused=True)
if doc.validate():
doc.save("output.pdf")
doc.dispose()Η κρυπτογράφηση και η αλλαγή κωδικού χρησιμοποιούν μια μορφή με έναν μόνο κωδικό αντί για τους ξεχωριστούς κωδικούς χρήστη/ιδιοκτήτη της κύριας Document.encrypt:
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.encrypt("secret")
doc.change_passwords("secret", "new-secret")
doc.save("protected.pdf")Εξαγωγή περιεχομένου χωρίς υπογραφή
generated.forms.UnsignedContentAbsorber εξάγει τις σελίδες, τα πεδία φόρμας και τις σημειώσεις ενός εγγράφου που δεν έχουν ακόμη υπογραφεί σε ένα δοχείο UnsignedContent. Καλέστε το extract() για να εκτελέσετε την εξαγωγή, έπειτα το get_extracted() ή το has_extracted() για να ελέγξετε το αποτέλεσμα χωρίς να το ξανατρέξετε.
from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContentAbsorber
doc = Document()
doc.load_from("input.pdf")
absorber = UnsignedContentAbsorber()
extracted = absorber.extract()
print(len(extracted.pages), len(extracted.form_fields), extracted.annotations)
if absorber.has_extracted():
same_result = absorber.get_extracted()
absorber.reset()Το UnsignedContent μπορεί επίσης να δημιουργηθεί και να συμπληρωθεί άμεσα, ανεξάρτητα από έναν απορροφητή:
from aspose_pdf.generated.forms import UnsignedContent
bundle = UnsignedContent()
bundle.add_page(some_page)
bundle.add_form_field(some_field)
bundle.add_annotation(some_annotation)
bundle.remove_page(some_page)
bundle.reset()Επιλογές επικύρωσης και αποτελέσματα του PDF/A
Το generated.pdfa.PdfAValidateOptions και το PdfAValidationResult είναι ένα αυτόνομο ζεύγος επιλογών/αποτελεσμάτων για ροές εργασίας επικύρωσης τύπου PDF/A. Δεν είναι οι κλάσεις που επιστρέφει το κύριο API στο Document.validate_pdfa() ή που καταναλώνονται από το PdfAValidator.process() — αυτές χρησιμοποιούν τις δικές τους, ξεχωριστά ορισμένες κλάσεις PdfAValidateOptions και PdfAValidationResult με πιο πλούσια διεπαφή (level, warnings, is_heuristic και ένα font_lookup_directory).
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
options = PdfAValidateOptions()
options.add_input()
options.set_option("level", "1b")
stored_options = options.get_options()
result = PdfAValidationResult()
result.add_error("Font not embedded: Arial")
summary = result.to_dict()
is_valid = result.is_validΣυμβουλές και βέλτιστες πρακτικές
- Εισάγετε κάθε κλάση
generatedμέσω της πλήρους διαδρομής του υπομονάδας της (from aspose_pdf.generated.document import Document, και παρομοίως γιαgenerated.formsκαιgenerated.pdfa) — μην υποθέτετε ποτέ ότι μια απλή εισαγωγήDocumentήUnsignedContentθα επιλύσει στην έκδοση συμβατότητας. - Δώστε στην εισαχθείσα κλάση ένα διακριτικό τοπικό όνομα όποτε ένα αρχείο χρησιμοποιεί επίσης το κύριο API στο ίδιο module, ώστε οι δύο διεπαφές να παραμένουν ορατά διαχωρισμένες σε κάθε σημείο κλήσης.
- Αντιμετωπίστε το
generated.pdfa.PdfAValidateOptions/PdfAValidationResultως ένα αυτόνομο ζεύγος: δημιουργήστε τις επιλογές, εκτελέστε τη δική σας λογική επικύρωσης και καταγράψτε τα ευρήματα με τοadd_error()μόνοι σας — δεν συμπληρώνονται αυτόματα από τοDocument.validate_pdfa(). - Ελέγξτε το
UnsignedContentAbsorber.has_extracted()πριν καλέσετε τοget_extracted()εάν δεν είστε σίγουροι ότι τοextract()έχει ήδη εκτελεστεί. - Προτιμήστε το κύριο
aspose_pdf.DocumentAPI για νέο κώδικα, εκτός εάν χρειάζεστε συγκεκριμένα τη μειωμένη, δημιουργημένη-συμβατότητας επιφάνεια.
Κοινά προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
Λανθασμένες Document μέθοδοι διαθέσιμες (λείπουν τα pages, form, xmp_metadata και παρόμοια) | Εισήχθη generated.document.Document αντί του κύριου aspose_pdf.Document | Εισάγετε την κύρια κλάση (import aspose_pdf; aspose_pdf.Document()) εκτός εάν η μειωμένη διεπαφή είναι αυτό που θέλετε |
PdfAValidateOptions/PdfAValidationResult από το generated.pdfa δεν λειτουργούν με το PdfAValidator.process() | Το PdfAValidator του κύριου API αναμένει τις δικές του κλάσεις PdfAValidateOptions/PdfAValidationResult, όχι τις εκδόσεις generated.pdfa | Χρησιμοποιήστε τις κλάσεις PdfAValidateOptions/PdfAValidationResult που εξάγονται από το aspose_pdf για τις ροές εργασίας PdfAValidator |
get_extracted() επιστρέφει None | extract() δεν κλήθηκε ποτέ σε αυτήν την παρουσία UnsignedContentAbsorber | Καλέστε το extract() πριν το get_extracted(), ή ελέγξτε πρώτα το has_extracted() |
Οι ιδιότητες στο generated.document.Document έχουν τύπο Any και δεν παρέχουν αυτόματη συμπλήρωση | Η παραγόμενη διεπαφή ανταλλάσσει τη στατική τυποποίηση για ένα μικρότερο, πιο απλό API | Κάντε μετατροπή τύπου ή τεκμηριώστε τον αναμενόμενο τύπο στο σημείο κλήσης, ή μεταβείτε στην κύρια κλάση Document για πιο πλούσια τυποποίηση |
FAQ
Είναι το aspose_pdf.generated stub ή placeholder;
Όχι. Είναι ένα πραγματικό, εισαγώσιμο υποπακέτο με λειτουργικές κλάσεις — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions και PdfAValidationResult — είναι απλώς μια μικρότερη, αυτόνομη επιφάνεια από το κύριο API της βιβλιοθήκης.
Γιατί το generated.document.Document έχει το ίδιο όνομα με το aspose_pdf.Document;
Πρόκειται για δύο ανεξάρτητα ορισμένες κλάσεις που τυχαία μοιράζονται το ίδιο όνομα. Η εισαγωγή από το aspose_pdf.generated.document σας παρέχει τη συμβατή έκδοση· η εισαγωγή του aspose_pdf.Document (ή του from aspose_pdf import Document) σας παρέχει την κύρια έκδοση.
Μπορώ να περάσω ένα generated.pdfa.PdfAValidateOptions στο PdfAValidator.process();
Όχι. PdfAValidator.process() είναι μέρος του κύριου API και αναμένει τη δική του κλάση PdfAValidateOptions του κύριου API, η οποία έχει διαφορετική υπογραφή μεθόδου (add_input(source) αντί για μια μέθοδο χωρίς ορίσματα add_input()).
Το UnsignedContentAbsorber.extract() χρειάζεται ένα όρισμα Document;
Όχι. Το extract() δεν δέχεται ορίσματα στην παραγόμενη επιφάνεια συμβατότητας· δημιουργήστε τον απορροφητή και καλέστε το extract() άμεσα.
Περίληψη API Reference
| Κλάση / Μέθοδος | Περιγραφή |
|---|---|
Document.load_from | Φορτώνει ένα έγγραφο από διαδρομή αρχείου, bytes ή ροή |
Document.save | Αποθηκεύει το έγγραφο σε προορισμό |
Document.optimize | Εκτελεί γενική βελτιστοποίηση, με προαιρετική συμπίεση εικόνων |
Document.optimize_resources | Βελτιστοποιεί κοινόχρηστους πόρους όπως γραμματοσειρές και εικόνες |
Document.encrypt | Κρυπτογραφεί το έγγραφο με έναν μοναδικό κωδικό πρόσβασης |
Document.change_passwords | Αλλάζει τον κωδικό πρόσβασης του εγγράφου |
Document.validate | Επιστρέφει αν το έγγραφο είναι δομικά έγκυρο |
Document.dispose | Απελευθερώνει τους πόρους που σχετίζονται με το έγγραφο |
UnsignedContent.add_page / remove_page | Προσθέτει ή αφαιρεί μια σελίδα από ένα πακέτο unsigned-content |
UnsignedContent.add_form_field / remove_form_field | Προσθέτει ή αφαιρεί ένα πεδίο φόρμας από ένα πακέτο unsigned-content |
UnsignedContent.add_annotation / remove_annotation | Προσθέτει ή αφαιρεί μια σημείωση από ένα πακέτο unsigned-content |
UnsignedContentAbsorber.extract | Εξάγει το unsigned content σε μια UnsignedContent instance |
UnsignedContentAbsorber.get_extracted | Επιστρέφει το τελευταίο εξαγόμενο UnsignedContent, εάν υπάρχει |
UnsignedContentAbsorber.has_extracted | Αναφέρει εάν έχει πραγματοποιηθεί εξαγωγή |
PdfAValidateOptions.add_input | Καταχωρεί μια πηγή εισόδου για επικύρωση |
PdfAValidateOptions.set_option / get_options | Ορίζει ή διαβάζει τιμές επιλογών επικύρωσης |
PdfAValidationResult.add_error | Προσθέτει ένα μήνυμα σφάλματος και σηματοδοτεί το αποτέλεσμα ως μη έγκυρο |
PdfAValidationResult.to_dict | Επιστρέφει μια αναπαράσταση λεξικού του αποτελέσματος επικύρωσης |