Jsme rádi, že můžeme oznámit vydání GroupDocs.Watermark for Python v26.10, dostupné od října 2026. Toto vydání aktualizuje podkladový .NET engine z verze 26.6 na 26.9 a vložený .NET runtime z 10.0.0 na 10.0.12. Přináší podporu vlastních loggerů, vynucuje přísnější přiřazování atributů a opravuje kritické problémy s preview callbacky a zpracováním proudu stránky. Navíc je rozšířena kompatibilita na Python 3.5–3.14 a podpora platforem je upřesněna pomocí přísných wheel tagů.

Co je nového v tomto vydání

  • [Feature] Přijmout Python objekt nebo funkci jako WatermarkerSettings.logger (WATERMARKPYTHON-65)
  • [Enhancement] Aktualizovat engine GroupDocs.Watermark z 26.6 na 26.9 (WATERMARKPYTHON-66)
  • [Enhancement] Aktualizovat vložený .NET runtime z 10.0.0 na 10.0.12 (WATERMARKPYTHON-67)
  • [Enhancement] Vyvolat AttributeError, když kód přiřadí atribut, který třída nemá (WATERMARKPYTHON-68)
  • [Fix] Nelze použít balíček na Python 3.5 – 3.7 (WATERMARKPYTHON-69)
  • [Fix] pip nainstaluje balíček na verze Linuxu a macOS, které jej nemohou spustit (WATERMARKPYTHON-70)
  • [Fix] Preview release callbacky dostávají None místo proudu stránky (WATERMARKPYTHON-71)
  • [Fix] Náhledy stránek zapsané do io.BytesIO jsou prázdné (WATERMARKPYTHON-72)
  • [Fix] Náhledy stránek tabulek zapsané přes release callback jsou oříznuté (WATERMARKPYTHON-73)

Změny veřejného API

Aktualizace vyžaduje použití nového wheelu (pip ≥ 20.3) a ošetření nového AttributeError pro špatně napsané atributy; ostatní podpisy API zůstávají beze změny.

Nové třídy a členové

  • Color: konstruktor; dříve žádný.
  • get() u 4 indexovaných tříd — ReadOnlyListBase, SpreadsheetHeaderFooterCollection, SpreadsheetHeaderFooterSectionCollection, WordProcessingHeaderFooterCollection — jako alternativa k x[key]; jejich vlastnost item je odstraněna.

Nové funkce

Vlastní logger pro WatermarkerSettings

WatermarkerSettings.logger nyní přijímá Python objekt nebo jednoduchou funkci. Ve verzi 26.6 přiřazení jakékoli hodnoty vyvolávalo

TypeError: _marshal_callback_or_handle: cannot wrap ... as GroupDocs.Watermark.Options.ILogger

Logger může být objekt, který implementuje trace(message), warning(message) a error(message, exception), nebo volatelný fn(level, message, exception). Engine zaznamená trace při otevření souboru a error (s textem .NET výjimky), když jej nemůže načíst; selhání uvnitř loggeru jsou ignorována.

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)

Přísné přiřazování atributů

Přiřazení špatně napsané nebo .NET‑stylové vlastnosti na wrapper watermark nyní vyvolá AttributeError místo tichého vytvoření Python‑only atributu. To zabraňuje kódu v domnělém změnění dokumentu, když se tak nestalo.

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

Vyvolaná chyba je:

AttributeError: 'TextWatermark' object has no attribute 'opacity_level'; assigning it would not reach the .NET object. Did you mean: 'opacity'?

Existující správná přiřazení vlastností nadále fungují beze změny.

Příklad kódu

Viz sekce Custom logger for WatermarkerSettings a Strict attribute assignment výše.

Jak získat aktualizaci

PyPI

Přímé stažení

Stáhněte si wheel soubory pro Windows, Linux a macOS ze stránky GroupDocs.Watermark for Python via .NET 26.10 .

Zdroje