Ми раді оголосити про випуск GroupDocs.Watermark for Python v26.10, доступний з жовтня 2026. Це випуск оновлює базовий .NET движок з 26.6 до 26.9 та вбудоване середовище виконання .NET з 10.0.0 до 10.0.12. Він додає підтримку користувацьких логерів, впроваджує суворіше призначення атрибутів і виправляє критичні проблеми з колбеками попереднього перегляду та обробкою потоків сторінок. Крім того, сумісність розширена до Python 3.5–3.14, а підтримка платформ уточнена за допомогою строгих тегів wheel.
Що нового у цьому випуску
- [Функція] Приймати Python‑об’єкт або функцію як
WatermarkerSettings.logger(WATERMARKPYTHON-65) - [Удосконалення] Оновити движок GroupDocs.Watermark з 26.6 до 26.9 (WATERMARKPYTHON-66)
- [Удосконалення] Оновити вбудоване середовище виконання .NET з 10.0.0 до 10.0.12 (WATERMARKPYTHON-67)
- [Удосконалення] Піднімати
AttributeError, коли код присвоює атрибут, якого клас не має (WATERMARKPYTHON-68) - [Виправлення] Неможливо використовувати пакет у Python 3.5 – 3.7 (WATERMARKPYTHON-69)
- [Виправлення] pip встановлює пакет на Linux та macOS версіях, які не можуть його запускати (WATERMARKPYTHON-70)
- [Виправлення] Колбеки попереднього перегляду отримують
Noneзамість потоку сторінки (WATERMARKPYTHON-71) - [Виправлення] Попередні перегляди сторінок, записані у
io.BytesIO, порожні (WATERMARKPYTHON-72) - [Виправлення] Попередні перегляди сторінок електронних таблиць, записані через колбек випуску, обрізані (WATERMARKPYTHON-73)
Зміни у публічному API
Оновлення вимагає використання нового wheel (pip ≥ 20.3) та обробки нового AttributeError для помилково написаних атрибутів; інші сигнатури API залишаються без змін.
Нові класи та члени
Color: конструктор; раніше його не було.get()у 4 індексованих класах —ReadOnlyListBase,SpreadsheetHeaderFooterCollection,SpreadsheetHeaderFooterSectionCollection,WordProcessingHeaderFooterCollection— як альтернативаx[key]; їхня властивістьitemвидалена.
Нові можливості
Користувацький логер для WatermarkerSettings
WatermarkerSettings.logger тепер приймає Python‑об’єкт або просту функцію. У 26.6 присвоєння будь‑якого значення викликало
TypeError: _marshal_callback_or_handle: cannot wrap ... as GroupDocs.Watermark.Options.ILogger
Логер може бути об’єктом, який реалізує trace(message), warning(message) та error(message, exception), або викликаємим fn(level, message, exception). Движок записує trace, коли відкриває файл, і error (з текстом виключення .NET), коли не може його завантажити; помилки всередині логера ігноруються.
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)
Суворе призначення атрибутів
Присвоєння помилково написаної або .NET‑подібної властивості у обгортці watermark тепер піднімає AttributeError замість тихого створення лише Python‑атрибуту. Це запобігає ситуації, коли код вважає, що змінив документ, хоча насправді не змінив.
Підняте виключення:
AttributeError: 'TextWatermark' object has no attribute 'opacity_level'; assigning it would not reach the .NET object. Did you mean: 'opacity'?
Існуючі правильні присвоєння властивостей продовжують працювати без змін.
Приклад коду
Дивіться розділи Користувацький логер для WatermarkerSettings та Суворе призначення атрибутів вище.
Як отримати оновлення
PyPI
- Пакет: groupdocs-watermark-net 26.10.0
- Команда встановлення:
pip install groupdocs-watermark-net==26.10.0
Пряме завантаження
Завантажте wheel‑файли для Windows, Linux та macOS зі сторінки GroupDocs.Watermark for Python via .NET 26.10.