ما الجديد في GroupDocs.Signature for Python 26.1 (يناير 2026)
| المعرف | الفئة | الملخص |
|---|---|---|
| SIGNATURENET‑5528 | ✨ الميزة | دعم وتحقق من التوقيع الرقمي للصور (إدماج LSB بالستغنوجرافيا لملفات PNG و JPG). |
| SIGNATURENET‑5445 | ✨ الميزة | العرض التكيفي لمعاينات توقيع الباركود ورمز الاستجابة السريعة – تحكم صريح في العرض/الارتفاع. |
| SIGNATURENET‑5479 | ✨ الميزة | دعم التدوير لصُور معاينة الباركود ورمز الاستجابة السريعة. |
| SIGNATURENET‑5478 | ✨ الميزة | تم إضافة معالجة صيغ الصور APNG و TGA للتواقيع القائمة على الصور. |
| SIGNATURENET‑5500 | ⚡ تحسين | تحسين استعلام بأسلوب LINQ للبحث عن التواقيع والتحقق منها (تصفية بالشرط). |
| SIGNATURENET‑5480 | ⚡ تحسين | دعم شفافية الخلفية لمعاينات الباركود/الرمز QR. |
| SIGNATURENET‑5477 | ⚡ تحسين | دعم صورة التراكب للتواقيع الرقمية مع لون الخلفية (علامة صورة المقدمة). |
| SIGNATURENET‑5422 | ⚡ تحسين | إزالة خوارزميات التشفير غير الآمنة (RC2، DES، TripleDES وأنماط AES الضعيفة). |
| SIGNATURENET‑5555 | 🐞 تصحيح خطأ | تم إصلاح استثناء GeneratePreview() المتعلق بتهيئة النوع لملفات DOC على لينكس. |
فيما يلي جولة تقنية قصيرة لأكثر التغييرات تأثيرًا.
١. التوقيع الرقمي للصور (ستغنوجرافيا)
- الإمضاءات مخفية في البتات الأقل أهمية لبكسلات PNG/JPG.
- محمية بكلمة مرور، متوافقة مع التدفق، وتعمل مع أي حجم صورة ≥ 8 × 8 بكسل.
توقيع صورة
import groupdocs.signature as gs
import groupdocs.signature.options as gso
input_file = "image.png"
output_file = "signed_image.png"
password = "MySecurePassword123"
# Sign the image
with gs.Signature(input_file) as signature:
sign_options = gso.ImageDigitalSignOptions()
sign_options.password = password
sign_result = signature.sign(output_file, sign_options)
if sign_result.succeeded and len(sign_result.succeeded) > 0:
print("Image signed successfully!")
print(f"Signatures added: {len(sign_result.succeeded)}")
التحقق من صورة موقعة
import groupdocs.signature as gs
import groupdocs.signature.options as gso
signed_file = "signed_image.png"
password = "MySecurePassword123"
with gs.Signature(signed_file) as signature:
verify_options = gso.ImageDigitalVerifyOptions()
verify_options.password = password
verify_options.detection_threshold_percent = 75 # optional 0‑100%
verify_result = signature.verify(verify_options)
if verify_result.is_valid:
print("Digital signature is valid!")
print(f"Verified signatures: {len(verify_result.succeeded)}")
else:
print("Digital signature is invalid or not found.")
التحقق المتقدم (استخراج كامل للبيانات)
with gs.Signature("signed_image.png") as signature:
verify_options = gso.ImageDigitalVerifyOptions()
verify_options.password = "MySecurePassword123"
verify_options.use_full_data_extraction = True
verify_options.detection_threshold_percent = 85
verify_result = signature.verify(verify_options)
if verify_result.is_valid and verify_options.detected_probability is not None:
print(f"Signature detected with {verify_options.detected_probability}% probability")
٢. العرض التكيفي لمعاينات الباركود ورمز QR
يمكن للمطورين الآن تحديد width وheight الدقيقين لإنشاء المعاينة، مما يلغي التناقضات السابقة في “الحجم التلقائي”.
import groupdocs.signature as gs
import groupdocs.signature.options as gso
import uuid
# QR code options
qr_sign_options = gso.QrCodeSignOptions("GROUP DOCS", gs.QrCodeTypes.QR)
qr_sign_options.width = 250
qr_sign_options.height = 270
qr_sign_options.fore_color = gs.Color.red
qr_sign_options.code_text_alignment = gs.CodeTextAlignment.BELOW
qr_sign_options.text = "GROUP DOCS"
# Preview generation
preview_options = gso.PreviewSignatureOptions(
qr_sign_options,
create_signature_stream, # user‑provided delegate
release_signature_stream # user‑provided delegate
)
preview_options.signature_id = str(uuid.uuid4())
preview_options.preview_format = gso.PreviewSignatureOptions.PreviewFormats.PNG
gs.Signature.generate_signature_preview(preview_options)
٣. دعم التدوير لمعاينات الباركود ورمز QR
قم بتعيين rotation_angle (بالدرجات) في خيارات الباركود/QR لتوليد معاينات مدورة.
import groupdocs.signature as gs
import groupdocs.signature.options as gso
import uuid
barcode_sign_options = gso.BarcodeSignOptions("GROUP DOCS", gs.BarcodeTypes.MaxiCode)
barcode_sign_options.width = 400
barcode_sign_options.height = 400
barcode_sign_options.fore_color = gs.Color.red
barcode_sign_options.code_text_alignment = gs.CodeTextAlignment.BELOW
barcode_sign_options.text = "GROUP DOCS"
barcode_sign_options.rotation_angle = 45 # rotate 45°
preview_options = gso.PreviewSignatureOptions(
barcode_sign_options,
create_signature_stream,
release_signature_stream
)
preview_options.signature_id = str(uuid.uuid4())
preview_options.preview_format = gso.PreviewSignatureOptions.PreviewFormats.PNG
gs.Signature.generate_signature_preview(preview_options)
٤. دعم صيغ صور جديدة – APNG و TGA
يمكن الآن استخدام ملفات APNG (PNG متحركة) و TGA (Targa) كـ توقيعات صور، وإدراجها، ومعاينتها، والتحقق منها تمامًا كما في PNG/JPG.
٥. شفافية الخلفية لمعاينات الباركود/QR
قم بتعيين خاصية transparency (من 0 إلى 1) في خيارات الباركود/QR لتوليد معاينات ذات خلفية شفافة.
barcode_sign_options = gso.BarcodeSignOptions("GROUP DOCS", gs.BarcodeTypes.Codabar)
barcode_sign_options.width = 400
barcode_sign_options.height = 400
barcode_sign_options.fore_color = gs.Color.red
barcode_sign_options.code_text_alignment = gs.CodeTextAlignment.BELOW
barcode_sign_options.text = "GROUP DOCS"
barcode_sign_options.transparency = 0.5 # 50 % transparent background
preview_options = gso.PreviewSignatureOptions(
barcode_sign_options,
create_signature_stream,
release_signature_stream
)
preview_options.signature_id = str(uuid.uuid4())
preview_options.preview_format = gso.PreviewSignatureOptions.PreviewFormats.PNG
gs.Signature.generate_signature_preview(preview_options)
٦. دعم صورة التراكب للتواقيع الرقمية
PdfDigitalSignatureAppearance الآن يدعم صورة التراكب و لون الخلفية دون إخفاء الصورة. التحكم في الطبقات عبر SignatureCustomAppearance.IsForegroundImage.
import groupdocs.signature as gs
import groupdocs.signature.options as gso
signature_image_path = "signature.png"
certificate_path = "JohnSmithCertificate.pfx"
input_pdf = "SampleDocument.pdf"
output_pdf = "SignedDocument.pdf"
with gs.Signature(input_pdf) as signature:
sign_options = gso.DigitalSignOptions(certificate_path)
sign_options.password = "1234567890"
sign_options.reason = "Document approval"
sign_options.contact = "John Smith"
sign_options.location = "Head Office"
# Visible signature placement
sign_options.visible = True
sign_options.left = 350
sign_options.top = 100
sign_options.width = 200
sign_options.height = 70
sign_options.image_file_path = signature_image_path
appearance = gso.PdfDigitalSignatureAppearance()
appearance.foreground = gs.Color.from_argb(50, gs.Color.brown)
appearance.font_family_name = "Times New Roman"
appearance.font_size = 12
appearance.background = gs.Color.from_argb(50, gs.Color.light_gray)
appearance.is_foreground_image = True # image on top of text
sign_options.appearance = appearance
sign_result = signature.sign(output_pdf, sign_options)
print(f"\nDocument signed successfully with {len(sign_result.succeeded)} signature(s).")
print(f"Signed file saved at: {output_pdf}")
٧. تعزيز الأمان – إزالة الخوارزميات غير الآمنة
تم إزالة RC2 و DES و TripleDES وأنماط AES الضعيفة من طبقة التشفير. الآن فقط الخوارزميات الحديثة المعتمدة من NIST متاحة، مما يحسن وضعية الأمان الافتراضية للمستندات الموقعة.
٨. تحسين استعلام بأسلوب LINQ
أصبح بإمكان search و verify للتواقيع الآن قبول دوال شرطية تقوم بتصفية التواقيع قبل خطوات المعالجة المكثفة. وهذا يقلل من استهلاك الذاكرة ويسرّع عمليات الدفعات.
البحث باستخدام شرط
import groupdocs.signature as gs
import groupdocs.signature.options as gso
import groupdocs.signature.domain as gsd
with gs.Signature("document.pdf") as signature:
search_options = [gso.TextSearchOptions()]
# Keep only text signatures that contain the word "Approved"
result = signature.search(search_options,
lambda sig: isinstance(sig, gsd.TextSignature) and "Approved" in sig.text)
for sig in result.signatures:
print(f"Found: {sig.text}")
التحقق باستخدام شرط
with gs.Signature("signed_document.pdf") as signature:
verify_options = gso.TextVerifyOptions("John Smith")
# Verify only signatures on page 1
result = signature.verify(verify_options,
lambda sig: sig.page_number == 1)
print(f"Found {len(result)} verified signatures on page 1")
٩. تم إصلاح تعطل معاينة DOC على لينكس
لم يعد GeneratePreview() يُطلق استثناء TypeInitializerException أثناء معالجة ملفات Microsoft Word (.doc) على لينكس، مما يعيد وظيفة المعاينة عبر الأنظمة.
تعليمات الترقية
pip install --upgrade groupdocs-signature-net
ملاحظة: يُستخدم اسم الحزمة
groupdocs-signature-netللغلاف Python‑via‑.NET.
الموارد
- ملاحظات الإصدار الكاملة: (link to the official release notes page, if available)
- التوثيق: https://docs.groupdocs.com/signature/python/
- المجتمع والدعم: https://forum.groupdocs.com/c/signature/10
تابع الإصدارات القادمة وراقب المدونة الرسمية للحصول على نصائح الأداء وأدلة أفضل الممارسات.