אנחנו שמחים להודיע על שחרור GroupDocs.Watermark for Python v26.10, זמין החל מ-אוקטובר 2026. שחרור זה משדרג את מנוע .NET הבסיסי מ‑26.6 ל‑26.9 ואת זמן הריצה המוטמע של .NET מ‑10.0.0 ל‑10.0.12. הוא מציג תמיכה ברשמים מותאמים אישית, מחייב הקצאת תכונות מחמירה יותר, ותיקון בעיות קריטיות עם קריאות חזרה של תצוגה מקדימה וטיפול בזרמי עמודים. בנוסף, התמיכה מורחבת ל‑Python 3.5–3.14, ותמיכת הפלטפורמה מוסברת באמצעות תגיות גלגלים מחמירות.

מה חדש בגרסה זו

  • [Feature] קבל אובייקט Python או פונקציה כ‑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] לא ניתן להשתמש בחבילה ב‑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 ציבורי

העדכון דורש שימוש בגלגל החדש (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))
    # השורה הבאה תגרום לשגיאה מכיוון שהשם של המאפיין שגוי
    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

הורדה ישירה

הורידו את הגלגלים עבור Windows, Linux ו‑macOS מהדף GroupDocs.Watermark for Python via .NET 26.10.

משאבים