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, IDataEncryption et ICustomSignHash (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, IncorrectPasswordException et PasswordRequiredException au lieu de RuntimeError (SIGNATUREPYTHON-26)
  • [Enhancement] Lever AttributeError lorsqu’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 datetime et Decimal à .NET sans modification (SIGNATUREPYTHON-29)
  • [Enhancement] Mettre à jour les balises de plateforme des wheels vers manylinux_2_27 et macosx_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.

Ressources