ما خوشحالیم که انتشار 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 سختگیرانه مشخص شده است.

چه چیزهای جدیدی در این نسخه وجود دارد

  • [Feature] پذیرش یک شیء یا تابع پایتون به عنوان WatermarkerSettings.logger (WATERMARKPYTHON-65)
  • [Enhancement] به‌روزرسانی موتور GroupDocs.Watermark از 26.6 به 26.9 (WATERMARKPYTHON-66)
  • [Enhancement] به‌روزرسانی زمان‌اجرای توکار .NET از 10.0.0 به 10.0.12 (WATERMARKPYTHON-67)
  • [Enhancement] پرتاب AttributeError زمانی که کد سعی می‌کند ویژگی‌ای را که کلاس ندارد اختصاص دهد (WATERMARKPYTHON-68)
  • [Fix] نمی‌توان بسته را در پایتون 3.5 – 3.7 استفاده کرد (WATERMARKPYTHON-69)
  • [Fix] pip بسته را بر روی نسخه‌های لینوکس و macOS که نمی‌توانند آن را اجرا کنند نصب می‌کند (WATERMARKPYTHON-70)
  • [Fix] کال‌بک‌های انتشار پیش‌نمایش None دریافت می‌کنند به جای جریان صفحه (WATERMARKPYTHON-71)
  • [Fix] پیش‌نمایش‌های صفحه‌ای که به io.BytesIO نوشته می‌شوند خالی هستند (WATERMARKPYTHON-72)
  • [Fix] پیش‌نمایش‌های صفحهٔ صفحه‌گسترده که از طریق کال‌بک انتشار نوشته می‌شوند کوتاه می‌شوند (WATERMARKPYTHON-73)

تغییرات API عمومی

به‌روزرسانی نیازمند استفاده از wheel جدید (pip ≥ 20.3) و مدیریت AttributeError جدید برای ویژگی‌های غلط‌نویسی شده است؛ سایر امضای API بدون تغییر باقی می‌مانند.

کلاس‌ها و اعضای جدید

  • Color: یک سازنده؛ قبلاً نداشت.
  • get() در ۴ کلاس ایندکس‌شده — ReadOnlyListBase, SpreadsheetHeaderFooterCollection, SpreadsheetHeaderFooterSectionCollection, WordProcessingHeaderFooterCollection — به‌عنوان جایگزین x[key]؛ ویژگی item آنها حذف شده است.

ویژگی‌های جدید

ثبت‌کننده سفارشی برای WatermarkerSettings

WatermarkerSettings.logger اکنون یک شیء پایتون یا یک تابع ساده را می‌پذیرد. در نسخه 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 بر روی یک wrapper آب‌نشان حالا یک AttributeError پرتاب می‌کند به‌جای اینکه به‌صورت خاموش یک ویژگی فقط پایتونی ایجاد کند. این امر از این‌که کد فکر کند سند تغییر یافته است در حالی که در واقع تغییر نیافته، جلوگیری می‌کند.

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'?

اختصاص‌های صحیح ویژگی‌های موجود همچنان به همان شکل کار می‌کنند.

مثال کد

به بخش‌های ثبت‌کننده سفارشی برای WatermarkerSettings و تخصیص ویژگی‌های سختگیرانه در بالا مراجعه کنید.

چگونه به‌روزرسانی را دریافت کنیم

PyPI

دانلود مستقیم

چرخ‌ها (wheels) برای Windows، Linux و macOS را از صفحه GroupDocs.Watermark for Python via .NET 26.10 دانلود کنید.

منابع