Мы рады объявить о выпуске GroupDocs.Watermark for Python v26.10, доступном с октября 2026. Этот выпуск обновляет базовый .NET‑движок с 26.6 до 26.9 и встроенную .NET runtime с 10.0.0 до 10.0.12. Он вводит поддержку пользовательских логгеров, усиливает проверку присвоения атрибутов и исправляет критические проблемы с обратными вызовами предварительного просмотра и обработкой потоков страниц. Кроме того, совместимость расширена до Python 3.5–3.14, а поддержка платформ уточнена с помощью строгих тегов wheel.
Что нового в этом выпуске
- [Feature] Принимать объект Python или функцию в качестве
WatermarkerSettings.logger(WATERMARKPYTHON-65) - [Enhancement] Обновить движок GroupDocs.Watermark с 26.6 до 26.9 (WATERMARKPYTHON-66)
- [Enhancement] Обновить встроенную .NET runtime с 10.0.0 до 10.0.12 (WATERMARKPYTHON-67)
- [Enhancement] Выбрасывать
AttributeError, когда код присваивает атрибут, которого нет у класса (WATERMARKPYTHON-68) - [Fix] Невозможно использовать пакет на Python 3.5 – 3.7 (WATERMARKPYTHON-69)
- [Fix] pip устанавливает пакет на Linux и macOS версиях, которые не могут его запустить (WATERMARKPYTHON-70)
- [Fix] Обратные вызовы предварительного выпуска получают
Noneвместо потока страницы (WATERMARKPYTHON-71) - [Fix] Предпросмотры страниц, записанные в
io.BytesIO, пусты (WATERMARKPYTHON-72) - [Fix] Предпросмотры страниц электронных таблиц, записанные через обратный вызов выпуска, усечены (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‑стильного свойства в обёртке водяного знака теперь вызывает AttributeError вместо тихого создания атрибута, доступного только в Python. Это предотвращает ситуацию, когда код считает, что изменил документ, хотя на самом деле не изменил.
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
Вызываемая ошибка:
AttributeError: 'TextWatermark' object has no attribute 'opacity_level'; assigning it would not reach the .NET object. Did you mean: 'opacity'?
Существующие корректные присвоения свойств продолжают работать без изменений.
Пример кода
Смотрите разделы Custom logger for WatermarkerSettings и Strict attribute assignment выше.
Как получить обновление
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.