Siamo felici di annunciare il rilascio di GroupDocs.Signature for Python v26.10, disponibile a partire da ottobre 2026. Questa versione importante aggiorna il motore sottostante di GroupDocs.Signature da 25.12 a 26.9 e migra il runtime .NET incorporato da .NET Core 3.1 a .NET 10.0.12. Introduce callback in stile Python per i flussi di anteprima, logger, crittografia dei dati e supporto per hash di firma personalizzati, aggiunge piena compatibilità con Python 3.14 e risolve problemi critici di importazione su Linux. Questa release comprende due nuove funzionalità, cinque miglioramenti e due correzioni di bug.
Novità di questa versione
- [Funzionalità] Accetta funzioni Python come callback di anteprima di pagina e firma (SIGNATUREPYTHON-21)
- [Funzionalità] Accetta oggetti Python come implementazioni di
ILogger,IDataEncryptioneICustomSignHash(SIGNATUREPYTHON-22) - [Funzionalità] Aggiunge il supporto per Python 3.14 (SIGNATUREPYTHON-23)
- [Miglioramento] Aggiorna il motore GroupDocs.Signature da 25.12 a 26.9 (SIGNATUREPYTHON-24)
- [Miglioramento] Aggiorna il runtime .NET incorporato da .NET Core 3.1 a .NET 10.0.12 (SIGNATUREPYTHON-25)
- [Miglioramento] Genera
GroupDocsSignatureException,IncorrectPasswordExceptionePasswordRequiredExceptioninvece diRuntimeError(SIGNATUREPYTHON-26) - [Miglioramento] Genera
AttributeErrorquando il codice assegna un attributo che la classe non possiede (SIGNATUREPYTHON-27) - [Miglioramento] Rinomina i membri i cui nomi Python separano parole .NET (
z_order→zorder,x_ad_es_type→xad_es_type) (SIGNATUREPYTHON-28) - [Miglioramento] Sceglie le overload in base al contenuto di una lista e passa valori
datetimeeDecimala .NET invariati (SIGNATUREPYTHON-29) - [Miglioramento] Aggiorna i tag di piattaforma wheel a
manylinux_2_27emacosx_12_0, e rimuove la wheel Windows a 32 bit (SIGNATUREPYTHON-30) - [Correzione] La wheel Linux non può essere importata sulle distribuzioni attuali (SIGNATUREPYTHON-31)
- [Correzione]
GROUPDOCS_LIC_PATHviene ignorato (SIGNATUREPYTHON-32)
Modifiche all’API pubblica
Gli aggiornamenti richiedono di adeguarsi ai membri rinominati, ai nuovi tipi di eccezione e ai tag di piattaforma aggiornati. Le assegnazioni di attributi ora generano AttributeError e i callback possono essere semplici callable Python.
Nuove classi e membri
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 costruttore; prima non ne aveva.PreviewSignatureOptions: un costruttore; prima non ne aveva.SearchResult:get_enumerator(),to_list().Signature:dispose().SignatureSettings:default_culture.WordProcessingSaveOptions:ooxml_compliance.
Rinominati
| Classe | Nome vecchio | Nome nuovo |
|---|---|---|
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 |
Nuove funzionalità
Generazione dell’anteprima con callback Python
PreviewOptions può ora essere costruito con semplici funzioni Python. Il callback create riceve un oggetto page_data e deve restituire uno stream scrivibile (oggetto file o io.BytesIO). Il callback release viene chiamato dopo che l’immagine è stata scritta e riceve lo stesso page_data e lo 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))
Oggetti Python come logger, crittografia e callback hash personalizzati
Oggetti Python semplici possono ora implementare le interfacce ILogger, IDataEncryption e ICustomSignHash. Un oggetto logger con i metodi trace, warning e error può essere passato a SignatureSettings. Un oggetto di crittografia con i metodi encode e decode può essere assegnato a options.data_encryption su firme QR‑code o metadata. Un hash signer personalizzato può essere una funzione o un oggetto con un metodo custom_sign_hash ed è utilizzato da 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)
Supporto per Python 3.14
La wheel ora dichiara python_requires=">=3.5,<3.15" e una singola wheel per piattaforma copre Python 3.5 – 3.14. Non sono necessarie modifiche al codice; lo stesso import e utilizzo funzionano con l’interprete più recente.
Esempio di codice
Vedi la sezione “Nuove funzionalità” sopra per esempi di codice funzionanti che dimostrano i callback Python per la generazione dell’anteprima e le implementazioni personalizzate di logger/criptazione.
Come ottenere l’aggiornamento
PyPI
Aggiorna al pacchetto più recente di GroupDocs.Signature for Python tramite PyPI: groupdocs-signature-net 26.10.0
Installa con:
pip install groupdocs-signature-net==26.10.0
Download diretto
Scarica i pacchetti wheel direttamente dalla pagina di rilascio GroupDocs.Signature for Python v26.10.