Siamo felici di annunciare il rilascio di GroupDocs.Watermark for Python v26.10, disponibile a partire da ottobre 2026. Questo rilascio aggiorna il motore .NET sottostante da 26.6 a 26.9 e il runtime .NET incorporato da 10.0.0 a 10.0.12. Introduce il supporto per logger personalizzati, impone un’assegnazione di attributi più rigorosa e corregge problemi critici con le callback di anteprima e la gestione dello stream di pagina. Inoltre, la compatibilità è estesa a Python 3.5–3.14 e il supporto della piattaforma è chiarito tramite tag wheel rigorosi.
Novità di questo rilascio
- [Funzionalità] Accettare un oggetto Python o una funzione come
WatermarkerSettings.logger(WATERMARKPYTHON-65) - [Miglioramento] Aggiornare il motore GroupDocs.Watermark da 26.6 a 26.9 (WATERMARKPYTHON-66)
- [Miglioramento] Aggiornare il runtime .NET incorporato da 10.0.0 a 10.0.12 (WATERMARKPYTHON-67)
- [Miglioramento] Generare
AttributeErrorquando il codice assegna un attributo che la classe non possiede (WATERMARKPYTHON-68) - [Correzione] Impossibile utilizzare il pacchetto su Python 3.5 – 3.7 (WATERMARKPYTHON-69)
- [Correzione] pip installava il pacchetto su versioni Linux e macOS che non possono eseguirlo (WATERMARKPYTHON-70)
- [Correzione] Le callback di rilascio dell’anteprima ricevono
Noneinvece dello stream della pagina (WATERMARKPYTHON-71) - [Correzione] Le anteprime di pagina scritte su
io.BytesIOsono vuote (WATERMARKPYTHON-72) - [Correzione] Le anteprime di pagina dei fogli di calcolo scritte tramite una callback di rilascio sono troncate (WATERMARKPYTHON-73)
Modifiche all’API pubblica
L’aggiornamento richiede l’uso del nuovo wheel (pip ≥ 20.3) e la gestione del nuovo AttributeError per attributi errati; le altre firme dell’API rimangono invariate.
Nuove classi e membri
Color: un costruttore; non ne aveva uno.get()su 4 classi indicizzate —ReadOnlyListBase,SpreadsheetHeaderFooterCollection,SpreadsheetHeaderFooterSectionCollection,WordProcessingHeaderFooterCollection— come alternativa ax[key]; la loro proprietàitemè stata rimossa.
Nuove funzionalità
Logger personalizzato per WatermarkerSettings
WatermarkerSettings.logger ora accetta un oggetto Python o una semplice funzione. In 26.6 l’assegnazione di qualsiasi valore generava
TypeError: _marshal_callback_or_handle: cannot wrap ... as GroupDocs.Watermark.Options.ILogger
Il logger può essere un oggetto che implementa trace(message), warning(message) e error(message, exception), oppure una callable fn(level, message, exception). Il motore registra un trace quando apre un file e un error (con il testo dell’eccezione .NET) quando non riesce a caricarne uno; i fallimenti all’interno del logger vengono ignorati.
from groupdocs.watermark import Watermarker, WatermarkerSettings
class PrintLogger:
def trace(self, message):
print("trace:", message)
def warning(self, message):
print("warning:", message)
def error(self, message, exception):
print("error:", message, exception)
settings = WatermarkerSettings()
settings.logger = PrintLogger() # object with the required methods
# or: settings.logger = lambda level, msg, exc: print(level, msg, exc)
with Watermarker("document.pdf", settings) as watermarker:
print(watermarker.get_document_info().page_count)
Assegnazione rigorosa di attributi
Assegnare una proprietà scritta in modo errato o in stile .NET su un wrapper di watermark ora genera un AttributeError invece di creare silenziosamente un attributo solo Python. Questo impedisce al codice di pensare di aver modificato il documento quando non è così.
from groupdocs.watermark import Watermarker
from groupdocs.watermark.watermarks import TextWatermark, Font
with Watermarker("document.pdf") as wm:
watermark = TextWatermark("CONFIDENTIAL", Font("Arial", 36))
# The following line raises an error because the property name is wrong
watermark.opacity_level = 0.5
L’errore generato è:
AttributeError: 'TextWatermark' object has no attribute 'opacity_level'; assigning it would not reach the .NET object. Did you mean: 'opacity'?
Le assegnazioni corrette di proprietà esistenti continuano a funzionare invariati.
Esempio di codice
Vedi le sezioni Logger personalizzato per WatermarkerSettings e Assegnazione rigorosa di attributi sopra.
Come ottenere l’aggiornamento
PyPI
- Pacchetto: groupdocs-watermark-net 26.10.0
- Comando di installazione:
pip install groupdocs-watermark-net==26.10.0
Download diretto
Scarica i wheel per Windows, Linux e macOS dalla pagina GroupDocs.Watermark for Python via .NET 26.10.