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,IDataEncryptioniICustomSignHash(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,IncorrectPasswordExceptioniPasswordRequiredExceptionzamiastRuntimeError(SIGNATUREPYTHON-26) - [Enhancement] Rzucanie
AttributeErrorgdy 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
datetimeiDecimaldo .NET bez zmian (SIGNATUREPYTHON-29) - [Enhancement] Aktualizacja znaczników platformy koła do
manylinux_2_27imacosx_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_PATHjest 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.