Wir freuen uns, die Veröffentlichung von GroupDocs.Signature for Python v26.10 bekannt zu geben, verfügbar seit Oktober 2026. Dieses Hauptrelease aktualisiert die zugrunde liegende GroupDocs.Signature‑Engine von 25.12 auf 26.9 und migriert die eingebettete .NET‑Runtime von .NET Core 3.1 auf .NET 10.0.12. Es führt Python‑artige Callbacks für Vorschau‑Streams, Logger, Datenverschlüsselung und benutzerdefinierte Signatur‑Hash‑Unterstützung ein, bietet volle Kompatibilität mit Python 3.14 und behebt kritische Import‑Probleme unter Linux. Dieses Release enthält zwei Hauptfunktionen, fünf Verbesserungen und zwei Fehlerbehebungen.

Was ist neu in diesem Release

  • [Feature] Akzeptieren Sie Python‑Funktionen als Seiten‑ und Signatur‑Vorschau‑Callbacks (SIGNATUREPYTHON-21)
  • [Feature] Akzeptieren Sie Python‑Objekte als Implementierungen von ILogger, IDataEncryption und ICustomSignHash (SIGNATUREPYTHON-22)
  • [Feature] Unterstützung für Python 3.14 hinzufügen (SIGNATUREPYTHON-23)
  • [Enhancement] Aktualisierung der GroupDocs.Signature‑Engine von 25.12 auf 26.9 (SIGNATUREPYTHON-24)
  • [Enhancement] Aktualisierung der eingebetteten .NET‑Runtime von .NET Core 3.1 auf .NET 10.0.12 (SIGNATUREPYTHON-25)
  • [Enhancement] Werfen von GroupDocsSignatureException, IncorrectPasswordException und PasswordRequiredException anstelle von RuntimeError (SIGNATUREPYTHON-26)
  • [Enhancement] Werfen von AttributeError, wenn Code ein Attribut zuweist, das die Klasse nicht besitzt (SIGNATUREPYTHON-27)
  • [Enhancement] Umbenennen von Mitgliedern, deren Python‑Namen .NET‑Wörter trennen (z_order → zorder, x_ad_es_type → xad_es_type) (SIGNATUREPYTHON-28)
  • [Enhancement] Auswahl von Überladungen anhand des Inhalts einer Liste und unveränderte Übergabe von datetime‑ und Decimal‑Werten an .NET (SIGNATUREPYTHON-29)
  • [Enhancement] Aktualisierung der Wheel‑Plattform‑Tags zu manylinux_2_27 und macosx_12_0 sowie Weglassen des 32‑Bit‑Windows‑Wheels (SIGNATUREPYTHON-30)
  • [Fix] Das Linux‑Wheel kann auf aktuellen Distributionen nicht importiert werden (SIGNATUREPYTHON-31)
  • [Fix] GROUPDOCS_LIC_PATH wird ignoriert (SIGNATUREPYTHON-32)

Änderungen an der öffentlichen API

Aufrüstende müssen sich an umbenannte Mitglieder, neue Ausnahmetypen und die aktualisierten Plattform‑Tags anpassen. Attributzuweisungen werfen nun AttributeError und Callbacks können einfache Python‑Callables sein.

Neue Klassen und Mitglieder

  • 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: ein Konstruktor; vorher keiner.
  • PreviewSignatureOptions: ein Konstruktor; vorher keiner.
  • SearchResult: get_enumerator(), to_list().
  • Signature: dispose().
  • SignatureSettings: default_culture.
  • WordProcessingSaveOptions: ooxml_compliance.

Umbenannt

Klasse Alter Name Neuer Name
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

Neue Funktionen

Vorschau‑Erstellung mit Python‑Callbacks

PreviewOptions können jetzt mit einfachen Python‑Funktionen konstruiert werden. Der create‑Callback erhält ein page_data‑Objekt und muss einen beschreibbaren Stream (Dateiobjekt oder io.BytesIO) zurückgeben. Der release‑Callback wird nach dem Schreiben des Bildes aufgerufen und erhält dieselben page_data und den Stream.

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))

Python‑Objekte als Logger, Verschlüsselung und benutzerdefinierte Hash‑Callbacks

Einfache Python‑Objekte können nun die Schnittstellen ILogger, IDataEncryption und ICustomSignHash implementieren. Ein Logger‑Objekt mit den Methoden trace, warning und error kann an SignatureSettings übergeben werden. Ein Verschlüsselungs‑Objekt mit den Methoden encode und decode kann options.data_encryption bei QR‑Code‑ oder Metadaten‑Signaturen zugewiesen werden. Ein benutzerdefinierter Hash‑Signer kann eine Funktion oder ein Objekt mit einer custom_sign_hash‑Methode sein und wird von DigitalSignOptions.custom_sign_hash verwendet.

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)

Unterstützung für Python 3.14

Das Wheel deklariert jetzt python_requires=">=3.5,<3.15" und ein einzelnes Wheel pro Plattform deckt Python 3.5 – 3.14 ab. Keine Code‑Änderungen sind erforderlich; derselbe Import und dieselbe Nutzung funktionieren mit dem neueren Interpreter.

Code‑Beispiel

Siehe den Abschnitt „Neue Funktionen“ oben für funktionierende Code‑Beispiele, die Python‑Callbacks für die Vorschau‑Erstellung sowie benutzerdefinierte Logger‑/Verschlüsselungs‑Implementierungen demonstrieren.

Wie Sie das Update erhalten

PyPI

Aktualisieren Sie das neueste GroupDocs.Signature for Python‑Paket über PyPI: groupdocs-signature-net 26.10.0

Installation mit:

pip install groupdocs-signature-net==26.10.0

Direkter Download

Laden Sie die Wheel‑Pakete direkt von der GroupDocs.Signature for Python v26.10 Release‑Seite herunter.

Ressourcen