يسعدنا أن نعلن عن إصدار GroupDocs.Signature for Python v26.10، المتاح اعتبارًا من أكتوبر 2026. هذا الإصدار الرئيسي يرقِّي محرك GroupDocs.Signature الأساسي من 25.12 إلى 26.9 وينقل بيئة تشغيل .NET المدمجة من .NET Core 3.1 إلى .NET 10.0.12. يضيف ردود نداء بأسلوب بايثون لتدفقات المعاينة، ومسجل، وتشفير البيانات، ودعم تجزئة توقيع مخصص، ويضيف توافقًا كاملًا مع Python 3.14، ويحل مشكلات الاستيراد الحرجة على لينكس. يتضمن هذا الإصدار ميزتين رئيسيتين، وخمس تحسينات، وتصحيحين للأخطاء.

ما الجديد في هذا الإصدار

  • [الميزة] قبول دوال بايثون كوظائف رد نداء لمعاينة الصفحات والتوقيعات (SIGNATUREPYTHON-21)
  • [الميزة] قبول كائنات بايثون كتنفيذات ILogger، IDataEncryption و ICustomSignHash (SIGNATUREPYTHON-22)
  • [الميزة] إضافة دعم لـ Python 3.14 (SIGNATUREPYTHON-23)
  • [تحسين] تحديث محرك GroupDocs.Signature من 25.12 إلى 26.9 (SIGNATUREPYTHON-24)
  • [تحسين] تحديث بيئة تشغيل .NET المدمجة من .NET Core 3.1 إلى .NET 10.0.12 (SIGNATUREPYTHON-25)
  • [تحسين] رفع GroupDocsSignatureException، IncorrectPasswordException و PasswordRequiredException بدلاً من RuntimeError (SIGNATUREPYTHON-26)
  • [تحسين] رفع AttributeError عندما يحاول الكود تعيين سمة لا تملكها الفئة (SIGNATUREPYTHON-27)
  • [تحسين] إعادة تسمية الأعضاء التي تقسم أسماء .NET إلى كلمات (z_order → zorder، x_ad_es_type → xad_es_type) (SIGNATUREPYTHON-28)
  • [تحسين] اختيار التحميل الزائد بناءً على محتويات قائمة، وتمرير قيم datetime و Decimal إلى .NET دون تعديل (SIGNATUREPYTHON-29)
  • [تحسين] تحديث وسوم منصة العجلة إلى manylinux_2_27 و macosx_12_0، وإلغاء عجلة Windows 32‑bit (SIGNATUREPYTHON-30)
  • [تصحيح] لا يمكن استيراد عجلة لينكس على التوزيعات الحالية (SIGNATUREPYTHON-31)
  • [تصحيح] تم تجاهل GROUPDOCS_LIC_PATH (SIGNATUREPYTHON-32)

تغييرات API العامة

يحتاج المستخدمون الذين يقومون بالترقية إلى تعديل الأعضاء المعاد تسميتها، وأنواع الاستثناءات الجديدة، ووسوم المنصات المحدثة. الآن تُرفع استثناءات AttributeError عند تعيين سمة غير موجودة، ويمكن أن تكون ردود النداء دوال بايثون عادية.

الفئات والأعضاء الجديدة

  • groupdocs.signature: ProcessCompleteEventHandler، ProcessProgressEventHandler، ProcessStartEventHandler.
  • groupdocs.signature.domain: OoxmlCompliance.
  • groupdocs.signature.options: CreateSignatureStream، ReleaseSignatureStream، PreviewOptions.CreateDocPageStream، PreviewOptions.ReleaseDocPageStream، PreviewOptions.PreviewFormats، PreviewSignatureOptions.PreviewFormats.
  • ConsoleLogger: error().
  • DigitalSignOptions: allow_expired، allow_not_yet_valid.
  • DigitalSignature: certificate_store_location، certificate_store_name.
  • FileLogger: error().
  • ILogger: error().
  • ImageSignOptions: dispose().
  • LoadOptions: skip_external_resources، whitelisted_resources.
  • Mailmark2D: class_.
  • MetadataSignatureCollection: append()، get().
  • PreviewOptions: مُنشئ؛ لم يكن موجودًا من قبل.
  • PreviewSignatureOptions: مُنشئ؛ لم يكن موجودًا من قبل.
  • SearchResult: get_enumerator()، to_list().
  • Signature: dispose().
  • SignatureSettings: default_culture.
  • WordProcessingSaveOptions: ooxml_compliance.

تم إعادة تسمية

الفئة الاسم القديم الاسم الجديد
BarcodeTypes DATA_LOGIC_2OF_5 DATA_LOGIC_2OF5
BarcodeTypes GS1_CODE_128 GS1_CODE128
BarcodeTypes GS1_MICRO_PDF_417 GS1_MICRO_PDF417
BarcodeTypes IATA2OF_5 IATA2OF5
BarcodeTypes INTERLEAVED_2OF_5 INTERLEAVED_2OF5
BarcodeTypes MATRIX_2OF_5 MATRIX_2OF5
BarcodeTypes STANDARD_2OF_5 STANDARD_2OF5
BarcodeTypes UPCA_GS_1_CODE_128_COUPON UPCA_GS1_CODE_128_COUPON
BarcodeTypes UPCA_GS_1_DATABAR_COUPON UPCA_GS1_DATABAR_COUPON
DigitalSignature x_ad_es_type xad_es_type
FileType G_ZIP GZIP
FileType L_ZIP LZIP
XAdESType X_AD_ES XAD_ES
DigitalSignOptions x_ad_es_type xad_es_type
JpegCompressionColorMode Y_CB_CR YCB_CR
SignOptions z_order zorder
PdfTextAnnotationAppearance h_corner_radius hcorner_radius
PdfTextAnnotationAppearance v_corner_radius vcorner_radius

الميزات الجديدة

إنشاء معاينة باستخدام ردود نداء بايثون

يمكن الآن إنشاء PreviewOptions باستخدام دوال بايثون عادية. تستقبل دالة create كائن page_data ويجب أن تُعيد تدفقًا قابلًا للكتابة (كائن ملف أو io.BytesIO). تُستدعى دالة release بعد كتابة الصورة وتستقبل نفس page_data والتدفق.

from groupdocs.signature import Signature
from groupdocs.signature.options import PreviewOptions

def create_page_stream(page_data):
    return open(f"page-{page_data.page_number}.png", "wb")

def release_page_stream(page_data, page_stream):
    page_stream.close()

with Signature("document.pdf") as signature:
    signature.generate_preview(PreviewOptions(create_page_stream, release_page_stream))

كائنات بايثون كمسجلات، تشفير، وردود نداء تجزئة مخصصة

يمكن الآن لكائنات بايثون عادية تنفيذ واجهات ILogger، IDataEncryption و ICustomSignHash. يمكن تمرير كائن مسجل يحتوي على طرق trace، warning و error إلى SignatureSettings. يمكن تعيين كائن تشفير يحتوي على طرق encode و decode إلى options.data_encryption في توقيعات QR‑code أو metadata. يمكن أن يكون مُوقّع التجزئة المخصص دالة أو كائنًا يحتوي على طريقة custom_sign_hash ويُستخدم عبر DigitalSignOptions.custom_sign_hash.

import base64

from groupdocs.signature import Signature, SignatureSettings
from groupdocs.signature.options import QrCodeSignOptions


class SimpleLogger:
    def trace(self, message):
        print("TRACE:", message)

    def warning(self, message):
        print("WARN:", message)

    def error(self, message, exception=None):
        print("ERROR:", message, exception)


class Base64Encryption:
    def encode(self, source):
        return base64.b64encode(source.encode()).decode()

    def decode(self, source):
        return base64.b64decode(source).decode()


options = QrCodeSignOptions("Private text")
options.data_encryption = Base64Encryption()

with Signature("document.pdf", SignatureSettings(logger=SimpleLogger())) as signature:
    signature.sign("signed.pdf", options)

الدعم لـ Python 3.14

الـ wheel الآن يعلن عن python_requires=">=3.5,<3.15" وعجلة واحدة لكل منصة تغطي Python 3.5 – 3.14. لا يلزم أي تغييرات في الشيفرة؛ نفس الاستيراد والاستخدام يعمل على المفسّر الأحدث.

مثال على الشيفرة

انظر قسم “الميزات الجديدة” أعلاه للحصول على أمثلة شيفرة تعمل توضح ردود نداء بايثون لإنشاء المعاينات وتنفيذ مسجلات/تشفير مخصصة.

كيفية الحصول على التحديث

PyPI

قم بالترقية إلى أحدث حزمة GroupDocs.Signature for Python عبر PyPI: groupdocs-signature-net 26.10.0

التثبيت باستخدام:

pip install groupdocs-signature-net==26.10.0

التحميل المباشر

حمّل حزم الـ wheel مباشرةً من صفحة إصدار GroupDocs.Signature for Python v26.10.

الموارد