Chúng tôi rất vui mừng thông báo việc phát hành GroupDocs.Watermark for Python v26.10, có sẵn từ tháng 10 năm 2026. Bản phát hành này nâng cấp .NET engine nền tảng từ 26.6 lên 26.9 và runtime .NET được nhúng từ 10.0.0 lên 10.0.12. Nó giới thiệu hỗ trợ cho các logger tùy chỉnh, thực thi việc gán thuộc tính chặt chẽ hơn, và sửa các vấn đề quan trọng liên quan đến callback preview và xử lý luồng trang. Ngoài ra, khả năng tương thích được mở rộng tới Python 3.5–3.14, và hỗ trợ nền tảng được làm rõ thông qua các thẻ wheel nghiêm ngặt.

Những gì mới trong bản phát hành này

  • [Feature] Chấp nhận một đối tượng Python hoặc hàm làm WatermarkerSettings.logger (WATERMARKPYTHON-65)
  • [Enhancement] Cập nhật engine GroupDocs.Watermark từ 26.6 lên 26.9 (WATERMARKPYTHON-66)
  • [Enhancement] Cập nhật runtime .NET được nhúng từ 10.0.0 lên 10.0.12 (WATERMARKPYTHON-67)
  • [Enhancement] Ném AttributeError khi mã gán một thuộc tính mà lớp không có (WATERMARKPYTHON-68)
  • [Fix] Không thể sử dụng gói trên Python 3.5 – 3.7 (WATERMARKPYTHON-69)
  • [Fix] pip cài đặt gói trên các phiên bản Linux và macOS không thể chạy nó (WATERMARKPYTHON-70)
  • [Fix] Các callback phát hành preview nhận None thay vì luồng trang (WATERMARKPYTHON-71)
  • [Fix] Các preview trang được ghi vào io.BytesIO là rỗng (WATERMARKPYTHON-72)
  • [Fix] Các preview trang Spreadsheet được ghi qua một callback phát hành bị cắt ngắn (WATERMARKPYTHON-73)

Các thay đổi API công khai

Nâng cấp yêu cầu sử dụng wheel mới (pip ≥ 20.3) và xử lý AttributeError mới cho các thuộc tính bị viết sai; các chữ ký API khác vẫn không thay đổi.

Các lớp và thành viên mới

  • Color: một hàm khởi tạo; trước đây không có.
  • get() trên 4 lớp có chỉ mục — ReadOnlyListBase, SpreadsheetHeaderFooterCollection, SpreadsheetHeaderFooterSectionCollection, WordProcessingHeaderFooterCollection — như một lựa chọn thay thế cho x[key]; thuộc tính item của chúng đã bị loại bỏ.

Các tính năng mới

Logger tùy chỉnh cho WatermarkerSettings

WatermarkerSettings.logger hiện nay chấp nhận một đối tượng Python hoặc một hàm đơn giản. Trong phiên bản 26.6 việc gán bất kỳ giá trị nào đều gây ra

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

Logger có thể là một đối tượng triển khai trace(message), warning(message) và error(message, exception), hoặc một callable fn(level, message, exception). Engine ghi lại một trace khi mở một tệp và một error (kèm theo văn bản ngoại lệ .NET) khi không thể tải tệp; các lỗi bên trong logger sẽ bị bỏ qua.

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)

Gán thuộc tính chặt chẽ

Việc gán một thuộc tính bị viết sai hoặc theo kiểu .NET trên một wrapper watermark hiện nay ném ra AttributeError thay vì âm thầm tạo một thuộc tính chỉ dành cho Python. Điều này ngăn mã nghĩ rằng nó đã thay đổi tài liệu trong khi thực tế không.

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ỗi được ném ra là:

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

Các việc gán thuộc tính đúng hiện có vẫn tiếp tục hoạt động như trước.

Ví dụ mã

Xem các phần Custom logger for WatermarkerSettings và Strict attribute assignment ở trên.

Cách nhận bản cập nhật

PyPI

Tải trực tiếp

Tải các wheel cho Windows, Linux và macOS từ trang GroupDocs.Watermark for Python via .NET 26.10 .

Tài nguyên