¡Nos complace anunciar el lanzamiento de GroupDocs.Signature for Python v26.10, disponible a partir de octubre de 2026! Esta versión importante actualiza el motor subyacente de GroupDocs.Signature de 25.12 a 26.9 y migra el runtime .NET incrustado de .NET Core 3.1 a .NET 10.0.12. Introduce callbacks al estilo Python para flujos de vista previa, logger, cifrado de datos y soporte de hash de firma personalizado, añade compatibilidad total con Python 3.14 y resuelve problemas críticos de importación en Linux. Esta versión incluye dos funcionalidades principales, cinco mejoras y dos correcciones de errores.
Novedades en esta versión
- [Funcionalidad] Aceptar funciones de Python como callbacks de vista previa de página y firma (SIGNATUREPYTHON-21)
- [Funcionalidad] Aceptar objetos de Python como implementaciones de
ILogger,IDataEncryptioneICustomSignHash(SIGNATUREPYTHON-22) - [Funcionalidad] Añadir soporte para Python 3.14 (SIGNATUREPYTHON-23)
- [Mejora] Actualizar el motor GroupDocs.Signature de 25.12 a 26.9 (SIGNATUREPYTHON-24)
- [Mejora] Actualizar el runtime .NET incrustado de .NET Core 3.1 a .NET 10.0.12 (SIGNATUREPYTHON-25)
- [Mejora] Lanzar
GroupDocsSignatureException,IncorrectPasswordExceptionyPasswordRequiredExceptionen lugar deRuntimeError(SIGNATUREPYTHON-26) - [Mejora] Lanzar
AttributeErrorcuando el código asigna un atributo que la clase no posee (SIGNATUREPYTHON-27) - [Mejora] Renombrar miembros cuyos nombres en Python separan palabras de .NET (
z_order→zorder,x_ad_es_type→xad_es_type) (SIGNATUREPYTHON-28) - [Mejora] Elegir sobrecargas según el contenido de una lista y pasar valores
datetimeyDecimala .NET sin cambios (SIGNATUREPYTHON-29) - [Mejora] Actualizar las etiquetas de plataforma de la rueda a
manylinux_2_27ymacosx_12_0, y eliminar la rueda de Windows de 32 bits (SIGNATUREPYTHON-30) - [Corrección] La rueda para Linux no podía importarse en distribuciones actuales (SIGNATUREPYTHON-31)
- [Corrección]
GROUPDOCS_LIC_PATHse ignora (SIGNATUREPYTHON-32)
Cambios en la API pública
Los usuarios que actualicen deberán adaptarse a los miembros renombrados, los nuevos tipos de excepción y las etiquetas de plataforma actualizadas. Las asignaciones de atributos ahora lanzan AttributeError y los callbacks pueden ser simples callables de Python.
Nuevas clases y miembros
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 constructor; antes no existía.PreviewSignatureOptions: un constructor; antes no existía.SearchResult:get_enumerator(),to_list().Signature:dispose().SignatureSettings:default_culture.WordProcessingSaveOptions:ooxml_compliance.
Renombrado
| Clase | Nombre antiguo | Nombre nuevo |
|---|---|---|
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 |
Nuevas funcionalidades
Generación de vista previa con callbacks de Python
PreviewOptions ahora puede construirse con funciones simples de Python. El callback create recibe un objeto page_data y debe devolver un flujo escribible (objeto de archivo o io.BytesIO). El callback release se invoca después de que la imagen se haya escrito y recibe el mismo page_data y el flujo.
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, cifrado y callbacks de hash personalizados
Ahora los objetos simples de Python pueden implementar las interfaces ILogger, IDataEncryption e ICustomSignHash. Un objeto logger con métodos trace, warning y error puede pasarse a SignatureSettings. Un objeto de cifrado con métodos encode y decode puede asignarse a options.data_encryption en firmas QR‑code o de metadatos. Un firmante de hash personalizado puede ser una función o un objeto con un método custom_sign_hash y se utiliza mediante 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)
Compatibilidad con Python 3.14
La rueda ahora declara python_requires=">=3.5,<3.15" y una única rueda por plataforma cubre Python 3.5 – 3.14. No se requieren cambios de código; la misma importación y uso funcionan con el intérprete más reciente.
Ejemplo de código
Consulte la sección “Nuevas funcionalidades” anterior para ver ejemplos de código que demuestran los callbacks de Python para la generación de vistas previas y las implementaciones de logger/cifrado personalizados.
Cómo obtener la actualización
PyPI
Actualice al último paquete GroupDocs.Signature for Python mediante PyPI: groupdocs-signature-net 26.10.0
Instale con:
pip install groupdocs-signature-net==26.10.0
Descarga directa
Descargue los paquetes wheel directamente desde la página de notas de la versión GroupDocs.Signature for Python v26.10.