Z przyjemnością ogłaszamy wydanie GroupDocs.Signature for Python v26.10, dostępne od października 2026. To duże wydanie aktualizuje podstawowy silnik GroupDocs.Signature z wersji 25.12 do 26.9 oraz migruje wbudowane środowisko .NET z .NET Core 3.1 do .NET 10.0.12. Wprowadza wywołania zwrotne w stylu Pythona dla strumieni podglądu, loggera, szyfrowania danych i obsługi niestandardowego haszowania podpisu, dodaje pełną kompatybilność z Python 3.14 oraz rozwiązuje krytyczne problemy z importem na Linuksie. Wydanie zawiera dwie główne funkcje, pięć ulepszeń i dwa poprawki błędów.

Co nowego w tej wersji

  • [Feature] Akceptowanie funkcji Pythona jako wywołań zwrotnych podglądu stron i podpisów (SIGNATUREPYTHON-21)
  • [Feature] Akceptowanie obiektów Pythona jako implementacji ILogger, IDataEncryption i ICustomSignHash (SIGNATUREPYTHON-22)
  • [Feature] Dodanie wsparcia dla Pythona 3.14 (SIGNATUREPYTHON-23)
  • [Enhancement] Aktualizacja silnika GroupDocs.Signature z 25.12 do 26.9 (SIGNATUREPYTHON-24)
  • [Enhancement] Aktualizacja wbudowanego środowiska .NET z .NET Core 3.1 do .NET 10.0.12 (SIGNATUREPYTHON-25)
  • [Enhancement] Rzucanie GroupDocsSignatureException, IncorrectPasswordException i PasswordRequiredException zamiast RuntimeError (SIGNATUREPYTHON-26)
  • [Enhancement] Rzucanie AttributeError gdy kod przypisuje atrybut, którego klasa nie posiada (SIGNATUREPYTHON-27)
  • [Enhancement] Zmiana nazw członków, których nazwy w Pythonie rozdzielały słowa .NET (z_order → zorder, x_ad_es_type → xad_es_type) (SIGNATUREPYTHON-28)
  • [Enhancement] Wybór przeciążeń na podstawie zawartości listy oraz przekazywanie wartości datetime i Decimal do .NET bez zmian (SIGNATUREPYTHON-29)
  • [Enhancement] Aktualizacja znaczników platformy koła do manylinux_2_27 i macosx_12_0, oraz usunięcie koła 32‑bitowego dla Windows (SIGNATUREPYTHON-30)
  • [Fix] Koło Linux nie mogło być importowane na bieżących dystrybucjach (SIGNATUREPYTHON-31)
  • [Fix] GROUPDOCS_LIC_PATH jest ignorowane (SIGNATUREPYTHON-32)

Zmiany w publicznym API

Użytkownicy aktualizujący muszą dostosować się do zmienionych nazw członków, nowych typów wyjątków oraz zaktualizowanych znaczników platformy. Przypisania atrybutów teraz rzucają AttributeError, a wywołania zwrotne mogą być zwykłymi wywoływalnymi obiektami Pythona.

Nowe klasy i członkowie

  • 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: konstruktor; wcześniej go nie było.
  • PreviewSignatureOptions: konstruktor; wcześniej go nie było.
  • SearchResult: get_enumerator(), to_list().
  • Signature: dispose().
  • SignatureSettings: default_culture.
  • WordProcessingSaveOptions: ooxml_compliance.

Zmienione nazwy

Klasa Stara nazwa Nowa nazwa
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

Nowe funkcje

Generowanie podglądu przy użyciu wywołań zwrotnych Pythona

PreviewOptions można teraz skonstruować, podając zwykłe funkcje Pythona. Wywołanie zwrotne create otrzymuje obiekt page_data i musi zwrócić strumień zapisu (obiekt pliku lub io.BytesIO). Wywołanie zwrotne release jest wywoływane po zapisaniu obrazu i otrzymuje te same page_data oraz strumień.

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

Obiekty Pythona jako logger, szyfrowanie i wywołania zwrotne niestandardowego haszowania

Zwykłe obiekty Pythona mogą teraz implementować interfejsy ILogger, IDataEncryption i ICustomSignHash. Obiekt loggera z metodami trace, warning i error można przekazać do SignatureSettings. Obiekt szyfrowania z metodami encode i decode można przypisać do options.data_encryption w opcjach podpisu QR‑code lub metadanych. Niestandardowy signer haszujący może być funkcją lub obiektem z metodą custom_sign_hash i jest używany przez 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)

Wsparcie dla Pythona 3.14

Koło teraz deklaruje python_requires=">=3.5,<3.15" i jedno koło na platformę obejmuje Pythona 3.5 – 3.14. Nie są wymagane żadne zmiany w kodzie; ten sam import i użycie działają na nowszym interpreterze.

Przykład kodu

Zobacz sekcję „Nowe funkcje” powyżej, aby uzyskać działające przykłady kodu demonstrujące wywołania zwrotne Pythona dla generowania podglądu oraz implementacje loggera i szyfrowania.

Jak uzyskać aktualizację

PyPI

Zaktualizuj do najnowszego pakietu GroupDocs.Signature for Python za pośrednictwem PyPI: groupdocs-signature-net 26.10.0

Instalacja:

pip install groupdocs-signature-net==26.10.0

Bezpośrednie pobranie

Pobierz pakiety koła bezpośrednio ze strony wydania GroupDocs.Signature for Python v26.10.

Zasoby