Ми раді оголосити про випуск GroupDocs.Signature for Python v26.10, доступний з жовтня 2026. Це велике оновлення оновлює базовий движок GroupDocs.Signature з 25.12 до 26.9 та переносить вбудовану .NET‑runtime з .NET Core 3.1 до .NET 10.0.12. Воно вводить колбеки у стилі Python для потоків попереднього перегляду, логера, шифрування даних та підтримки користувацького підпису хешу, додає повну сумісність з Python 3.14 і вирішує критичні проблеми імпорту в Linux. У цьому випуску два основних функціональних оновлення, п’ять покращень і два виправлення помилок.

Що нового у цьому випуску

  • [Feature] Приймати функції Python як колбеки попереднього перегляду сторінок та підпису (SIGNATUREPYTHON-21)
  • [Feature] Приймати об’єкти Python як реалізації ILogger, IDataEncryption та ICustomSignHash (SIGNATUREPYTHON-22)
  • [Feature] Додати підтримку Python 3.14 (SIGNATUREPYTHON-23)
  • [Enhancement] Оновити движок GroupDocs.Signature з 25.12 до 26.9 (SIGNATUREPYTHON-24)
  • [Enhancement] Оновити вбудовану .NET‑runtime з .NET Core 3.1 до .NET 10.0.12 (SIGNATUREPYTHON-25)
  • [Enhancement] Піднімати GroupDocsSignatureException, IncorrectPasswordException та PasswordRequiredException замість RuntimeError (SIGNATUREPYTHON-26)
  • [Enhancement] Піднімати AttributeError, коли код присвоює атрибут, якого немає у класі (SIGNATUREPYTHON-27)
  • [Enhancement] Перейменувати члени, чиї Python‑імена розбиваються на .NET‑слова (z_order → zorder, x_ad_es_type → xad_es_type) (SIGNATUREPYTHON-28)
  • [Enhancement] Вибирати перевантаження за вмістом списку та передавати значення datetime і Decimal у .NET без змін (SIGNATUREPYTHON-29)
  • [Enhancement] Оновити теги платформ колеса до manylinux_2_27 і macosx_12_0, а також прибрати 32‑бітове Windows‑колесо (SIGNATUREPYTHON-30)
  • [Fix] Колесо Linux не можна імпортувати у поточних дистрибутивах (SIGNATUREPYTHON-31)
  • [Fix] GROUPDOCS_LIC_PATH ігнорується (SIGNATUREPYTHON-32)

Зміни у публічному API

Оновлювачі повинні адаптуватися до перейменованих членів, нових типів виключень та оновлених тегів платформ. Присвоєння атрибутів тепер піднімає AttributeError, а колбеки можуть бути простими викликаємими об’єктами Python.

Нові класи та члени

  • 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: конструктор; раніше його не було.
  • PreviewSignatureOptions: конструктор; раніше його не було.
  • SearchResult: get_enumerator(), to_list().
  • Signature: dispose().
  • SignatureSettings: default_culture.
  • WordProcessingSaveOptions: ooxml_compliance.

Перейменовано

Клас Стара назва Нова назва
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

Нові функції

Генерація попереднього перегляду за допомогою Python‑колбеків

PreviewOptions тепер можна створювати, передаючи прості функції Python. Колбек create отримує об’єкт page_data і має повернути записуваний потік (файловий об’єкт або io.BytesIO). Колбек release викликається після запису зображення і отримує ті ж page_data і потік.

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 як логер, шифрування та колбеки користувацького хешу

Прості об’єкти Python тепер можуть реалізовувати інтерфейси ILogger, IDataEncryption та ICustomSignHash. Об’єкт логера з методами trace, warning і error можна передати в SignatureSettings. Об’єкт шифрування з методами encode і decode можна призначити options.data_encryption у підписах QR‑code або метаданих. Користувацький підписувач хешу може бути функцією або об’єктом з методом custom_sign_hash і використовується в 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)

Підтримка Python 3.14

Колесо тепер оголошує python_requires=">=3.5,<3.15" і одне колесо на платформу охоплює Python 3.5 – 3.14. Змін у коді не потрібно; той самий імпорт і використання працюватимуть у новішому інтерпретаторі.

Приклад коду

Дивіться розділ «Нові функції» вище для робочих прикладів коду, що демонструють Python‑колбеки для генерації попереднього перегляду та реалізації користувацького логера/шифрування.

Як отримати оновлення

PyPI

Оновіть до останньої версії пакету GroupDocs.Signature for Python через PyPI: groupdocs-signature-net 26.10.0

Встановити за допомогою:

pip install groupdocs-signature-net==26.10.0

Пряме завантаження

Завантажте колеса безпосередньо зі сторінки випуску GroupDocs.Signature for Python v26.10.

Ресурси