Travailler avec la compatibilité générée API
Travailler avec la compatibilité générée API
Aspose.PDF FOSS pour Python fournit une seconde surface API plus petite sous le sous-package aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent et UnsignedContentAbsorber, ainsi que generated.pdfa.PdfAValidateOptions et PdfAValidationResult. Chacune de ces classes partage son nom avec une classe de la API principale de la bibliothèque (aspose_pdf.Document, aspose_pdf.UnsignedContent, etc.), mais ce sont des classes distinctes, définies indépendamment, avec une surface de méthodes réduite. Elles existent comme une couche de compatibilité autonome — importez-les toujours via leur chemin complet aspose_pdf.generated.* afin de savoir laquelle vous appelez.
Cycle de vie du document via le Document généré
generated.document.Document prend en charge le cycle de vie principal du document: chargement, sauvegarde, optimisation de base, chiffrement et validation. La plupart de ses propriétés sont typées Any plutôt que les types plus riches exposés sur la classe principale 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()Le chiffrement et les changements de mot de passe utilisent un formulaire à mot de passe unique plutôt que les mots de passe séparés utilisateur/propriétaire du Document.encrypt principal:
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")Extraction de contenu non signé
generated.forms.UnsignedContentAbsorber extrait les pages, les champs de formulaire et les annotations d’un document qui n’ont pas encore été signés dans un conteneur UnsignedContent. Appelez extract() pour lancer l’extraction, puis get_extracted() ou has_extracted() pour vérifier le résultat sans le relancer.
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 peut également être construit et rempli directement, indépendamment d’un absorbeur :
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 options de validation et résultats
generated.pdfa.PdfAValidateOptions et PdfAValidationResult constituent une paire options/résultat autonome pour les flux de travail de validation de style PDF/A. Elles ne sont pas les classes renvoyées par le API principal Document.validate_pdfa() ou consommées par PdfAValidator.process() — celles-ci utilisent leurs propres classes PdfAValidateOptions et PdfAValidationResult définies séparément, avec une surface plus riche (level, warnings, is_heuristic et un 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_validConseils et bonnes pratiques
- Importez chaque classe
generatedvia son chemin de sous-module complet (from aspose_pdf.generated.document import Document, et de même pourgenerated.formsetgenerated.pdfa) — ne supposez jamais qu’une importation simple deDocumentou deUnsignedContentrésout vers la version de compatibilité. - Attribuez à la classe importée un nom local distinctif chaque fois qu’un fichier utilise également le API principal dans le même module, afin que les deux surfaces restent visiblement séparées à chaque site d’appel.
- Considérez
generated.pdfa.PdfAValidateOptions/PdfAValidationResultcomme une paire autonome: construisez les options, exécutez votre propre logique de validation et enregistrez les résultats avecadd_error()vous-même — ils ne sont pas remplis automatiquement parDocument.validate_pdfa(). - Vérifiez
UnsignedContentAbsorber.has_extracted()avant d’appelerget_extracted()si vous n’êtes pas certain queextract()a déjà été exécuté. - Préférez le
aspose_pdf.DocumentAPI principal pour le nouveau code, sauf si vous avez spécifiquement besoin de la surface de compatibilité générée réduite.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
Mauvaises méthodes Document disponibles (manquantes pages, form, xmp_metadata, et similaires) | Importé generated.document.Document au lieu du aspose_pdf.Document principal | Importez la classe principale (import aspose_pdf; aspose_pdf.Document()) à moins que vous ne visiez une surface réduite |
Les PdfAValidateOptions/PdfAValidationResult de generated.pdfa ne fonctionnent pas avec PdfAValidator.process() | Le PdfAValidator du API principal attend ses propres classes PdfAValidateOptions/PdfAValidationResult, pas les versions generated.pdfa | Utilisez les classes PdfAValidateOptions/PdfAValidationResult exportées depuis aspose_pdf pour les flux de travail PdfAValidator |
get_extracted() renvoie None | extract() n’a jamais été appelé sur cette instance UnsignedContentAbsorber | Appelez extract() avant get_extracted(), ou vérifiez has_extracted() d’abord |
Les propriétés de generated.document.Document sont typées Any et ne proposent pas d’autocomplétion | La surface générée échange le typage statique contre un API plus petit et plus simple | Effectuez un cast ou documentez le type attendu au point d’appel, ou passez à la classe principale Document pour un typage plus riche |
FAQ
Le aspose_pdf.generated est-il un bouchon ou un espace réservé?
Non. C’est un vrai sous-package importable avec des classes fonctionnelles — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions et PdfAValidationResult — c’est simplement une surface plus petite et autonome que le API principal de la bibliothèque.
Pourquoi generated.document.Document porte-t-il le même nom que aspose_pdf.Document?
Ce sont deux classes définies indépendamment qui se trouvent partager un même nom. Importer depuis aspose_pdf.generated.document vous fournit la version de compatibilité; importer aspose_pdf.Document (ou from aspose_pdf import Document) vous fournit la version principale.
Puis-je passer un generated.pdfa.PdfAValidateOptions à PdfAValidator.process()?
Non. PdfAValidator.process() fait partie du API principal et attend la classe PdfAValidateOptions propre au API principal, qui possède une signature de méthode différente (add_input(source) au lieu d’un add_input() sans argument).
Est-ce que UnsignedContentAbsorber.extract() nécessite un argument Document?
Non. extract() ne prend aucun argument dans la surface de compatibilité générée; construisez l’absorbeur et appelez extract() directement.
API Reference Résumé
| Classe / Méthode | Description |
|---|---|
Document.load_from | Charge un document depuis un chemin de fichier, des octets ou un flux |
Document.save | Enregistre le document vers une destination |
Document.optimize | Effectue une optimisation générique, en compressant éventuellement les images |
Document.optimize_resources | Optimise les ressources partagées telles que les polices et les images |
Document.encrypt | Chiffre le document avec un seul mot de passe |
Document.change_passwords | Modifie le mot de passe du document |
Document.validate | Retourne si le document est structurellement valide |
Document.dispose | Libère les ressources associées au document |
UnsignedContent.add_page / remove_page | Ajoute ou supprime une page d’un bundle de contenu non signé |
UnsignedContent.add_form_field / remove_form_field | Ajoute ou supprime un champ de formulaire d’un bundle unsigned-content |
UnsignedContent.add_annotation / remove_annotation | Ajoute ou supprime une annotation d’un bundle unsigned-content |
UnsignedContentAbsorber.extract | Extrait le contenu unsigned dans une instance UnsignedContent |
UnsignedContentAbsorber.get_extracted | Renvoie le dernier UnsignedContent extrait, le cas échéant |
UnsignedContentAbsorber.has_extracted | Signale si l’extraction a été effectuée |
PdfAValidateOptions.add_input | Enregistre une source d’entrée pour la validation |
PdfAValidateOptions.set_option / get_options | Définit ou lit les valeurs des options de validation |
PdfAValidationResult.add_error | Ajoute un message d’erreur et marque le résultat comme invalide |
PdfAValidationResult.to_dict | Renvoie une représentation sous forme de dictionnaire du résultat de validation |