Nous sommes heureux d’annoncer la sortie de GroupDocs.Signature for Python v26.10, disponible depuis octobre 2026. Cette version majeure met à jour le moteur sous‑jacent GroupDocs.Signature de la version 25.12 à 26.9 et migre le runtime .NET intégré de .NET Core 3.1 vers .NET 10.0.12. Elle introduit des callbacks de style Python pour les flux d’aperçu, le journaliseur, le chiffrement des données et la prise en charge du hachage de signature personnalisé, ajoute une compatibilité totale avec Python 3.14 et résout des problèmes critiques d’importation sous Linux. Cette version comprend deux nouvelles fonctionnalités majeures, cinq améliorations et deux corrections de bugs.
Nouveautés de cette version
- [Feature] Accepter les fonctions Python comme callbacks de prévisualisation de page et de signature (SIGNATUREPYTHON-21)
- [Feature] Accepter les objets Python comme implémentations de
ILogger,IDataEncryptionetICustomSignHash(SIGNATUREPYTHON-22) - [Feature] Ajouter la prise en charge de Python 3.14 (SIGNATUREPYTHON-23)
- [Enhancement] Mettre à jour le moteur GroupDocs.Signature de la version 25.12 à 26.9 (SIGNATUREPYTHON-24)
- [Enhancement] Mettre à jour le runtime .NET intégré de .NET Core 3.1 vers .NET 10.0.12 (SIGNATUREPYTHON-25)
- [Enhancement] Lever
GroupDocsSignatureException,IncorrectPasswordExceptionetPasswordRequiredExceptionau lieu deRuntimeError(SIGNATUREPYTHON-26) - [Enhancement] Lever
AttributeErrorlorsqu’un code assigne un attribut qu’une classe ne possède pas (SIGNATUREPYTHON-27) - [Enhancement] Renommer les membres dont les noms Python séparent les mots .NET (
z_order→zorder,x_ad_es_type→xad_es_type) (SIGNATUREPYTHON-28) - [Enhancement] Choisir les surcharges en fonction du contenu d’une liste et transmettre les valeurs
datetimeetDecimalà .NET sans modification (SIGNATUREPYTHON-29) - [Enhancement] Mettre à jour les balises de plateforme des wheels vers
manylinux_2_27etmacosx_12_0, et supprimer la wheel Windows 32 bits (SIGNATUREPYTHON-30) - [Fix] La wheel Linux ne pouvait pas être importée sur les distributions actuelles (SIGNATUREPYTHON-31)
- [Fix]
GROUPDOCS_LIC_PATHétait ignoré (SIGNATUREPYTHON-32)
Modifications de l’API publique
Les utilisateurs qui effectuent la mise à niveau doivent s’adapter aux membres renommés, aux nouveaux types d’exception et aux balises de plateforme mises à jour. Les affectations d’attributs lèvent désormais AttributeError et les callbacks peuvent être de simples appelables Python.
Nouvelles classes et membres
groupdocs.signature:ProcessCompleteEventHandler,ProcessProgressEventHandler,ProcessStartEventHandler.groupdocs.signature.domain:OoxmlCompliance.groupdocs.signature.options:CreateSignatureStream,ReleaseSignatureStream,PreviewOptions.CreateDocPageStream,PreviewOptions.ReleaseDocPageStream,PreviewOptions.PreviewFormats,PreviewSignatureOptions.PreviewFormats.ConsoleLogger:error().DigitalSignOptions:allow_expired,allow_not_yet_valid.DigitalSignature:certificate_store_location,certificate_store_name.FileLogger:error().ILogger:error().ImageSignOptions:dispose().LoadOptions:skip_external_resources,whitelisted_resources.Mailmark2D:class_.MetadataSignatureCollection:append(),get().PreviewOptions: un constructeur ; il n’en existait aucun auparavant.PreviewSignatureOptions: un constructeur ; il n’en existait aucun auparavant.SearchResult:get_enumerator(),to_list().Signature:dispose().SignatureSettings:default_culture.WordProcessingSaveOptions:ooxml_compliance.
Renommés
| Classe | Ancien nom | Nouveau nom |
|---|---|---|
BarcodeTypes |
DATA_LOGIC_2OF_5 |
DATA_LOGIC_2OF5 |
BarcodeTypes |
GS1_CODE_128 |
GS1_CODE128 |
BarcodeTypes |
GS1_MICRO_PDF_417 |
GS1_MICRO_PDF417 |
BarcodeTypes |
IATA2OF_5 |
IATA2OF5 |
BarcodeTypes |
INTERLEAVED_2OF_5 |
INTERLEAVED_2OF5 |
BarcodeTypes |
MATRIX_2OF_5 |
MATRIX_2OF5 |
BarcodeTypes |
STANDARD_2OF_5 |
STANDARD_2OF5 |
BarcodeTypes |
UPCA_GS_1_CODE_128_COUPON |
UPCA_GS1_CODE_128_COUPON |
BarcodeTypes |
UPCA_GS_1_DATABAR_COUPON |
UPCA_GS1_DATABAR_COUPON |
DigitalSignature |
x_ad_es_type |
xad_es_type |
FileType |
G_ZIP |
GZIP |
FileType |
L_ZIP |
LZIP |
XAdESType |
X_AD_ES |
XAD_ES |
DigitalSignOptions |
x_ad_es_type |
xad_es_type |
JpegCompressionColorMode |
Y_CB_CR |
YCB_CR |
SignOptions |
z_order |
zorder |
PdfTextAnnotationAppearance |
h_corner_radius |
hcorner_radius |
PdfTextAnnotationAppearance |
v_corner_radius |
vcorner_radius |
Nouvelles fonctionnalités
Génération d’aperçu avec des callbacks Python
PreviewOptions peut désormais être construit avec de simples fonctions Python. Le callback create reçoit un objet page_data et doit renvoyer un flux inscriptible (objet fichier ou io.BytesIO). Le callback release est appelé après l’écriture de l’image et reçoit le même page_data ainsi que le flux.
from groupdocs.signature import Signature
from groupdocs.signature.options import PreviewOptions
def create_page_stream(page_data):
return open(f"page-{page_data.page_number}.png", "wb")
def release_page_stream(page_data, page_stream):
page_stream.close()
with Signature("document.pdf") as signature:
signature.generate_preview(PreviewOptions(create_page_stream, release_page_stream))
Objets Python comme callbacks de journalisation, de chiffrement et de hachage personnalisé
Des objets Python simples peuvent désormais implémenter les interfaces ILogger, IDataEncryption et ICustomSignHash. Un objet journaliseur disposant des méthodes trace, warning et error peut être passé à SignatureSettings. Un objet de chiffrement avec les méthodes encode et decode peut être assigné à options.data_encryption sur les signatures QR‑code ou métadonnées. Un hachage personnalisé peut être une fonction ou un objet possédant une méthode custom_sign_hash et est utilisé par DigitalSignOptions.custom_sign_hash.
import base64
from groupdocs.signature import Signature, SignatureSettings
from groupdocs.signature.options import QrCodeSignOptions
class SimpleLogger:
def trace(self, message):
print("TRACE:", message)
def warning(self, message):
print("WARN:", message)
def error(self, message, exception=None):
print("ERROR:", message, exception)
class Base64Encryption:
def encode(self, source):
return base64.b64encode(source.encode()).decode()
def decode(self, source):
return base64.b64decode(source).decode()
options = QrCodeSignOptions("Private text")
options.data_encryption = Base64Encryption()
with Signature("document.pdf", SignatureSettings(logger=SimpleLogger())) as signature:
signature.sign("signed.pdf", options)
Prise en charge de Python 3.14
La wheel déclare désormais python_requires=">=3.5,<3.15" et une seule wheel par plateforme couvre Python 3.5 – 3.14. Aucun changement de code n’est requis ; l’importation et l’utilisation restent identiques avec l’interpréteur plus récent.
Exemple de code
Voir la section « Nouvelles fonctionnalités » ci‑dessus pour des exemples de code fonctionnels illustrant les callbacks Python pour la génération d’aperçu ainsi que les implémentations personnalisées de journaliseur et de chiffrement.
Comment obtenir la mise à jour
PyPI
Mettez à jour vers le dernier package GroupDocs.Signature for Python via PyPI : groupdocs-signature-net 26.10.0
Installez avec :
pip install groupdocs-signature-net==26.10.0
Téléchargement direct
Téléchargez les packages wheel directement depuis la page de notes de version GroupDocs.Signature for Python v26.10.