Kami senang mengumumkan rilis GroupDocs.Watermark for Python v26.10, tersedia sejak Oktober 2026. Rilis ini meningkatkan mesin .NET yang mendasarinya dari 26.6 ke 26.9 dan runtime .NET yang disematkan dari 10.0.0 ke 10.0.12. Ini memperkenalkan dukungan untuk logger khusus, menegakkan penetapan atribut yang lebih ketat, dan memperbaiki masalah kritis dengan callback pratinjau dan penanganan aliran halaman. Selain itu, kompatibilitas diperluas ke Python 3.5–3.14, dan dukungan platform diklarifikasi melalui tag roda yang ketat.

Apa yang baru di rilis ini

  • [Fitur] Menerima objek Python atau fungsi sebagai WatermarkerSettings.logger (WATERMARKPYTHON-65)
  • [Peningkatan] Memperbarui mesin GroupDocs.Watermark dari 26.6 ke 26.9 (WATERMARKPYTHON-66)
  • [Peningkatan] Memperbarui runtime .NET yang disematkan dari 10.0.0 ke 10.0.12 (WATERMARKPYTHON-67)
  • [Peningkatan] Menghasilkan AttributeError ketika kode menetapkan atribut yang tidak dimiliki kelas (WATERMARKPYTHON-68)
  • [Perbaikan] Tidak dapat menggunakan paket pada Python 3.5 – 3.7 (WATERMARKPYTHON-69)
  • [Perbaikan] pip menginstal paket pada versi Linux dan macOS yang tidak dapat menjalankannya (WATERMARKPYTHON-70)
  • [Perbaikan] Callback rilis pratinjau menerima None alih-alih aliran halaman (WATERMARKPYTHON-71)
  • [Perbaikan] Pratinjau halaman yang ditulis ke io.BytesIO kosong (WATERMARKPYTHON-72)
  • [Perbaikan] Pratinjau halaman Spreadsheet yang ditulis melalui callback rilis terpotong (WATERMARKPYTHON-73)

Perubahan API Publik

Peningkatan memerlukan penggunaan wheel baru (pip ≥ 20.3) dan penanganan AttributeError baru untuk atribut yang salah eja; tanda tangan API lainnya tetap tidak berubah.

Kelas dan anggota baru

  • Color: sebuah konstruktor; sebelumnya tidak ada.
  • get() pada 4 kelas terindeks — ReadOnlyListBase, SpreadsheetHeaderFooterCollection, SpreadsheetHeaderFooterSectionCollection, WordProcessingHeaderFooterCollection — sebagai alternatif untuk x[key]; properti item mereka dihapus.

Fitur baru

Logger khusus untuk WatermarkerSettings

WatermarkerSettings.logger kini menerima objek Python atau fungsi biasa. Pada versi 26.6 penetapan nilai apa pun menghasilkan

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

Logger dapat berupa objek yang mengimplementasikan trace(message), warning(message), dan error(message, exception), atau callable fn(level, message, exception). Mesin mencatat trace ketika membuka file dan error (dengan teks pengecualian .NET) ketika tidak dapat memuatnya; kegagalan di dalam logger diabaikan.

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)

Penetapan atribut yang ketat

Menetapkan properti yang salah eja atau bergaya .NET pada pembungkus watermark kini menghasilkan AttributeError alih-alih secara diam-diam membuat atribut hanya Python. Ini mencegah kode berpikir bahwa dokumen telah diubah padahal tidak.

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

Error yang dihasilkan adalah:

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

Penetapan properti yang benar yang ada tetap berfungsi tanpa perubahan.

Contoh kode

Lihat bagian Logger khusus untuk WatermarkerSettings dan Penetapan atribut yang ketat di atas.

Cara mendapatkan pembaruan

PyPI

Unduhan langsung

Unduh wheel untuk Windows, Linux, dan macOS dari halaman GroupDocs.Watermark for Python via .NET 26.10.

Sumber daya