Introduction
document.py, le module qui définit Aspose.PDF FOSS pour la classe Document de Python, le décrit comme une classe qui « enveloppe le moteur PDF natif ». Concrètement, ce moteur est aspose_pdf.engine.simple_pdf.SimplePdf: Document.load_from crée une instance SimplePdf, et chaque opération au niveau du document — enregistrement, optimisation, réparation, chiffrement — lui est déléguée. Il en va de même pour le rendu: Page.render et Document.render_page appellent tous deux aspose_pdf.engine.rasterizer.
La plupart du code applicatif n’a jamais besoin d’aller au-delà de Document et Page. Cependant, aspose_pdf.engine est un paquet Python ordinaire et importable, et plusieurs des composants sous la façade sont utiles séparément: le rasteriseur qui transforme une page en pixels, les codecs de filtres de flux qui compressent et décompressent les flux de contenu PDF, et les utilitaires de chiffrement qui implémentent les algorithmes AES-CBC et RC4 sur lesquels s’appuient les gestionnaires de sécurité PDF. Contrairement au paquet principal, les sous-modules de aspose_pdf.engine ne sont pas réexportés depuis le aspose_pdf de niveau supérieur — la seule exception étant RasterizedPage, relié via aspose_pdf.visualization — de sorte que tout ce qui suit est importé par son chemin complet, par exemple from aspose_pdf.engine.filters import StreamDecoder.
Aspose.PDF FOSS pour Python est un paquet Python, aspose-pdf-foss-for-python, publié sous licence MIT, nécessitant Python3.11 ou supérieur. Son nom de module de niveau supérieur est aspose_pdf. Le paquet cœur ne dépend que de cryptography et asn1crypto; les extras optionnels ajoutent le décodage d’images basé sur Pillow, la prise en charge des polices WOFF2 basée sur Brotli, et la mise en page de texte complexe basée sur HarfBuzz.
Fonctionnalités clés
Rendu des pages avec le moteur de rasterisation
Document.render_page(page_index, dpi=..., scale=..., background=..., antialias=...) et son homologue Page.render renvoient tous deux un RasterizedPage — un raster RGB compact produit par le rasteriseur du moteur. RasterizedPage expose width, height et les octets bruts pixels, ainsi que get_pixel() pour une recherche à un seul pixel, to_png() / to_tiff() pour des octets encodés en mémoire, et save() pour écrire directement un fichier .png ou .tif/.tiff. Travailler avec l’objet en mémoire — plutôt que de ne faire que l’enregistrer sur disque — est utile lorsqu’un appelant souhaite inspecter ou transformer les pixels avant de décider de les conserver.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Rendered by the engine", x=72, y=700, font_size=18)
raster = document.render_page(0, dpi=150)
print(raster.width, raster.height)
corner = raster.get_pixel(0, 0)
print("top-left pixel:", corner)
with open("page-0.png", "wb") as handle:
handle.write(raster.to_png())
raster.save("page-0.tiff")
Le moteur de filtres de flux
Le contenu PDF et les flux d’objets sont compressés avec des filtres nommés tels que FlateDecode et LZWDecode. aspose_pdf.engine.filters.StreamEncoder.encode(data, filters, decode_parms=None) et StreamDecoder.decode(data, filters, decode_parms, *, limits=None, max_output_bytes=None) implémentent les côtés encodage et décodage de cette chaîne de filtres — les mêmes codecs que le moteur utilise en interne lorsqu’il écrit et lit les flux d’un document. Les deux acceptent un nom de filtre unique ou une liste pour des filtres en chaîne, et StreamDecoder.decode() lève PdfValidationException lorsqu’un nom de filtre n’est pas reconnu au lieu de renvoyer des octets silencieusement incorrects.
from aspose_pdf.engine.filters import StreamDecoder, StreamEncoder
raw = b"Sample content-stream payload.\n" * 40
compressed = StreamEncoder.encode(raw, "FlateDecode")
restored = StreamDecoder.decode(compressed, "FlateDecode", None)
assert restored == raw
print(f"{len(raw)} bytes -> {len(compressed)} bytes with FlateDecode")
Le moteur de chiffrement
aspose_pdf.engine.encryption.EncryptionUtils est la classe utilitaire à méthodes statiques que SimplePdf invoque pour chaque opération liée au chiffrement: Document.encrypt, decrypt() et change_passwords() se traduisent tous en appels EncryptionUtils en interne. Ses méthodes implémentent directement AES-CBC et le chiffrement RC4 (encrypt_aes_cbc, decrypt_aes_cbc, encrypt_rc4, decrypt_rc4), la dérivation de clé pour les révisions du gestionnaire de sécurité standard PDF (compute_owner_key_v4, compute_user_key_v4, compute_user_owner_keys_v6), et generate_file_id() pour l’ID aléatoire de 16octets requis par les nouveaux documents.
from aspose_pdf.engine.encryption import EncryptionUtils
key = b"0123456789ABCDEF" # 16 bytes -> AES-128
ciphertext = EncryptionUtils.encrypt_aes_cbc(key, b"Reviewer notes: approved")
plaintext = EncryptionUtils.decrypt_aes_cbc(key, ciphertext)
assert plaintext == b"Reviewer notes: approved"
file_id = EncryptionUtils.generate_file_id()
print(file_id.hex())
Démarrage rapide
Installez le paquet, puis rendez une page directement depuis la couche moteur dans un script unique.
asposefoss/pdf is not yet published — build from source until it ships. See the project README for build instructions.from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Engine-rendered page", x=72, y=740, font_size=20)
raster = document.render_page(0, dpi=150)
raster.save("engine-render.png")
document.save("engine-quickstart.pdf")
print("Saved engine-quickstart.pdf and engine-render.png")
Formats pris en charge
| Format | Extension | Lire | Écrire |
|---|---|---|---|
| Oui | Oui | ||
| TIFF | tiff | - | Oui |
La lecture et l’écriture de PDF est Aspose.PDF FOSS pour la fonction principale de Python — la paire de moteurs Document/SimplePdf charge et écrit des documents PDF sur chaque chemin de code dans cet article. Document.render_page, Page.render et RasterizedPage.to_png() / to_tiff() produisent également une sortie raster PNG et TIFF; il s’agit de sorties de rasterisation de page plutôt que de formats de chargement de document.
Open Source & Licence
Aspose.PDF FOSS pour Python est publié sous licence MIT: aucune restriction d’utilisation, aucun frais d’exécution, et aucune exigence d’enregistrement pour une utilisation commerciale ou personnelle. Le code source est hébergé sur github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, et le paquet est publié sur PyPI sous le nom aspose-pdf-foss-for-python.