Aspose.PDF FOSS for Python Fonctionnalités
Aspose.PDF FOSS pour Python Fonctionnalités
Aspose.PDF FOSS pour Python est une bibliothèque pure-Python pour créer, ouvrir, modifier et enregistrer des documents PDF. Cette page passe en revue les principales zones de capacité et les classes qui servent de points d’entrée. Chaque zone est détaillée en profondeur sur sa propre page du guide du développeur.
Gestion des documents et des pages
Document est l’objet racine de chaque opération. Construisez-le sans arguments pour démarrer un nouveau document vide, ou appelez load_from() pour lire un document existant à partir d’un chemin, de bytes, ou d’un flux. document.pages expose le PageCollection mutable, et Page.add_text place du texte positionné sur une page.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")Extraction de texte et recherche
PdfExtractor se lie à un document et extrait le texte page par page. bind_pdf() ouvre la source, extract_text() effectue l’extraction, et get_text() renvoie le résultat accumulé.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()Pour une recherche et un remplacement positionnés, par fragment, TextFragmentAbsorber expose les objets TextFragment correspondants avec text_search_options contrôlant la sensibilité à la casse et la correspondance d’expression régulière.
Rendu de page en images
Document.save_page_as_image rend une page unique directement en fichier PNG ou TIFF à une résolution DPI configurable. Pour un accès de bas niveau, Page.render renvoie un RasterizedPage avec des données de pixels brutes via get_pixel() et pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)Formulaires et champs interactifs
Les champs AcroForm sont gérés via Document.form, une façade Form. Form.add_text_field() (et les équivalents case à cocher, bouton radio, liste et zone combinée) crée un nouveau champ lié à une page et à un rectangle de widget, renvoyant un Field. Form.fields répertorie chaque champ présent sur le document.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")Sécurité, chiffrement et signatures
Document.encrypt protège un document avec un mot de passe utilisateur (nécessaire pour l’ouvrir) et un mot de passe propriétaire (nécessaire pour modifier les autorisations); decrypt() et change_passwords() gèrent la protection sur un document déjà ouvert. is_encrypted indique l’état actuel.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")La vérification de la signature numérique est gérée par PdfSignature.validate, qui renvoie un ValidationResult décrivant le niveau de confiance et l’état de révocation, et SigningUtils fournit des assistants de certificat et de signature PKCS#7/CAdES.
PDF/A et PDF/UA Conformité
Document.validate_pdfa exécute une vérification de conformité heuristique PDF/A et renvoie un PdfAValidationResult; convert_to_pdfa() tente de remédier le document à ce niveau. validate_pdfua() et auto_tag() fournissent la vérification d’accessibilité équivalente et le balisage automatique de l’arbre de structure pour PDF/UA.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")Conseils et bonnes pratiques
- Modifiez l’objet renvoyé directement par
document.pages,page.annotationsoudocument.form— les modifications apportées à une copie distincte d’une page ou d’un champ ne sont pas reflétées lorsque vous appelezsave(). PageCollectionest indexé à partir de zéro dans cette liaison Python (document.pages[0]est la première page).- Interceptez
InvalidPasswordExceptionetPdfParseExceptionavant leAsposePdfExceptionplus large lors de l’appel deload_from()sur une entrée non fiable, afin de pouvoir réagir différemment à un mauvais mot de passe qu’à un fichier corrompu. - Appelez
document.optimize()oucompress_streams()avantsave()sur des documents fortement modifiés afin de supprimer les ressources inutilisées et de réduire la taille du fichier. - Passez un
PdfLoadLimitslimité àload_from()lors du traitement de PDF provenant d’une source non fiable, afin de plafonner la mémoire et le nombre d’objets pendant l’analyse.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
save() produit un fichier avec des modifications non modifiées | Des modifications ont été apportées à une page, une annotation ou une copie de champ plutôt qu’à l’objet obtenu à partir de document.pages, annotations ou form | Modifiez l’objet renvoyé directement par ces collections |
InvalidPasswordException on load_from() | Le document est protégé par mot de passe et aucun mot de passe, ou le mauvais, n’a été fourni | Saisissez le mot de passe correct : document.load_from(path, password="...") |
validate_pdfa() signale toujours une erreur de police après convert_to_pdfa() | Aucun fichier de police correspondant n’a été trouvé dans le font_lookup_directory fourni | Ajoutez la police manquante au répertoire de recherche, ou enregistrez-la avec FontRepository avant la conversion |
| L’image rendue semble vide | Indice de page incorrect transmis à save_page_as_image() ou render() | pages utilise l’indexation à partir de zéro — confirmez l’indice et vérifiez si PdfExtractor renvoie du texte pour cette page. |
Le champ ajouté avec Form.add_text_field() n’apparaît pas sur la page | Le rectangle du widget se trouve en dehors du media_box de la page | Confirmez que les coordonnées du rectangle sont dans Page.media_box |
FAQ
Le FOSS Aspose.PDF pour Python dépend-il d’un moteur PDF commercial?
Non. Il s’agit d’un moteur PDF pure-Python développé de zéro, publié sous licence MIT. Ses seules dépendances d’exécution sont cryptography et asn1crypto, utilisés pour le chiffrement et la vérification de signature.
Puis-je créer un PDF à partir de zéro au lieu d’ouvrir un PDF existant?
Oui. Document() sans arguments crée un document vide en mémoire; appelez document.pages.add() pour ajouter des pages avant l’enregistrement.
Vers quels formats raster puis-je rendre une page?
Page.render et Document.save_page_as_image produisent une sortie raster PNG ou TIFF; le RasterizedPage retourné expose également les données brutes des pixels via get_pixel() et la propriété pixels.
Quelle exception dois-je intercepter pour les erreurs spécifiques au package?
Capturez AsposePdfException. Chaque erreur spécifique au package — y compris le parsing (PdfParseException), le mot de passe et le chiffrement (PdfSecurityException, InvalidPasswordException), et les échecs de validation (PdfValidationException) — en découle.
Où aller ensuite?
Le guide de démarrage couvre l’installation, la licence et un premier exemple fonctionnel. Ce guide développeur poursuit avec des sujets de gestion de documents tels que les formulaires, les pièces jointes de fichiers intégrées, la découverte de polices et la création de plans/marquages.
API Reference Résumé
| Classe/Méthode | Description |
|---|---|
Document | Objet racine — créer, charger, enregistrer et gérer un PDF |
Document.pages | Le PageCollection mutable du document |
Document.load_from / Document.save | Lire depuis ou écrire vers un chemin, des octets ou un flux |
Document.encrypt / Document.decrypt | Protéger par mot de passe ou supprimer la protection |
Document.validate_pdfa / Document.convert_to_pdfa | Contrôle heuristique de conformité PDF/A et conversion |
Document.validate_pdfua() / Document.auto_tag | Contrôle d’accessibilité PDF/UA et auto-étiquetage de la structure |
Page.add_text | Ajouter du texte positionné à une page |
Page.render | Rendre une page en RasterizedPage |
PdfExtractor | Extraire le texte des pages et les pièces jointes intégrées |
PdfFileEditor | Concaténer, scinder, insérer et supprimer des pages entre les fichiers |
Form / Field | AcroForm conteneur et champs de formulaire individuels |
PdfSignature / SigningUtils | Validation et création de signature numérique |
AsposePdfException | Classe de base pour chaque exception spécifique à un paquet |