Estamos felizes em anunciar o lançamento do GroupDocs.Signature for Python v26.10, disponível a partir de outubro de 2026. Esta versão principal atualiza o mecanismo subjacente do GroupDocs.Signature de 25.12 para 26.9 e migra o runtime .NET incorporado de .NET Core 3.1 para .NET 10.0.12. Ela introduz callbacks no estilo Python para fluxos de pré‑visualização, logger, criptografia de dados e suporte a hash de assinatura personalizado, adiciona compatibilidade total com Python 3.14 e resolve problemas críticos de importação em Linux. Esta versão inclui duas funcionalidades principais, cinco aprimoramentos e duas correções de bugs.
O que há de novo nesta versão
- [Feature] Aceitar funções Python como callbacks de pré‑visualização de página e assinatura (SIGNATUREPYTHON-21)
- [Feature] Aceitar objetos Python como implementações de
ILogger,IDataEncryptioneICustomSignHash(SIGNATUREPYTHON-22) - [Feature] Adicionar suporte ao Python 3.14 (SIGNATUREPYTHON-23)
- [Enhancement] Atualizar o mecanismo GroupDocs.Signature de 25.12 para 26.9 (SIGNATUREPYTHON-24)
- [Enhancement] Atualizar o runtime .NET incorporado de .NET Core 3.1 para .NET 10.0.12 (SIGNATUREPYTHON-25)
- [Enhancement] Lançar
GroupDocsSignatureException,IncorrectPasswordExceptionePasswordRequiredExceptionem vez deRuntimeError(SIGNATUREPYTHON-26) - [Enhancement] Lançar
AttributeErrorquando o código atribui um atributo que a classe não possui (SIGNATUREPYTHON-27) - [Enhancement] Renomear membros cujos nomes Python dividem palavras .NET (
z_order→zorder,x_ad_es_type→xad_es_type) (SIGNATUREPYTHON-28) - [Enhancement] Escolher sobrecargas pelo conteúdo de uma lista e passar valores
datetimeeDecimalpara .NET sem alterações (SIGNATUREPYTHON-29) - [Enhancement] Atualizar as tags de plataforma da wheel para
manylinux_2_27emacosx_12_0, e remover a wheel Windows de 32 bits (SIGNATUREPYTHON-30) - [Fix] A wheel Linux não pode ser importada nas distribuições atuais (SIGNATUREPYTHON-31)
- [Fix]
GROUPDOCS_LIC_PATHé ignorado (SIGNATUREPYTHON-32)
Alterações na API pública
Os usuários que atualizam precisam adaptar‑se a membros renomeados, novos tipos de exceção e às tags de plataforma atualizadas. Atribuições de atributos agora lançam AttributeError e os callbacks podem ser funções Python simples.
Novas classes e membros
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: um construtor; antes não existia.PreviewSignatureOptions: um construtor; antes não existia.SearchResult:get_enumerator(),to_list().Signature:dispose().SignatureSettings:default_culture.WordProcessingSaveOptions:ooxml_compliance.
Renomeados
| Classe | Nome antigo | Nome novo |
|---|---|---|
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 |
Novos recursos
Geração de pré‑visualização com callbacks Python
PreviewOptions agora pode ser construído com funções Python simples. O callback create recebe um objeto page_data e deve retornar um fluxo gravável (objeto de arquivo ou io.BytesIO). O callback release é chamado após a imagem ser escrita e recebe o mesmo page_data e o fluxo.
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))
Objetos Python como logger, criptografia e callbacks de hash personalizado
Objetos Python simples podem agora implementar as interfaces ILogger, IDataEncryption e ICustomSignHash. Um objeto logger com métodos trace, warning e error pode ser passado para SignatureSettings. Um objeto de criptografia com métodos encode e decode pode ser atribuído a options.data_encryption em assinaturas de QR‑code ou metadados. Um assinador de hash personalizado pode ser uma função ou um objeto com método custom_sign_hash e é usado por 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)
Suporte ao Python 3.14
A wheel agora declara python_requires=">=3.5,<3.15" e uma única wheel por plataforma cobre Python 3.5 – 3.14. Nenhuma alteração de código é necessária; a mesma importação e uso funcionam no interpretador mais recente.
Exemplo de código
Veja a seção “Novos recursos” acima para exemplos de código funcionais que demonstram callbacks Python para geração de pré‑visualização e implementações personalizadas de logger/criptografia.
Como obter a atualização
PyPI
Atualize para o pacote mais recente do GroupDocs.Signature for Python via PyPI: groupdocs-signature-net 26.10.0
Instalar com:
pip install groupdocs-signature-net==26.10.0
Download direto
Baixe os pacotes wheel diretamente da página de lançamento do GroupDocs.Signature for Python v26.10.