מה חדש ב-GroupDocs.Signature for Python 26.1 (ינואר 2026)
| מזהה | קטגוריה | סיכום |
|---|---|---|
| SIGNATURENET‑5528 | ✨ תכונה | תמיכה באימות וחתימה דיגיטלית של תמונה (הטמעת LSB סטגנוגרפית עבור PNG ו‑JPG). |
| SIGNATURENET‑5445 | ✨ תכונה | הצגה מותאמת של תצוגות מקדימות של חתימות ברקוד וקוד QR – שליטה מפורשת ברוחב/גובה. |
| SIGNATURENET‑5479 | ✨ תכונה | תמיכה בסיבוב של תמונות תצוגה מקדימה של ברקוד וקוד QR. |
| SIGNATURENET‑5478 | ✨ תכונה | הוספת טיפול בפורמטים APNG ו‑TGA לחתימות מבוססות תמונה. |
| SIGNATURENET‑5500 | ⚡ שיפור | אופטימיזציית שאילתות בסגנון LINQ לחיפוש ואימות חתימות (סינון באמצעות תנאי). |
| SIGNATURENET‑5480 | ⚡ שיפור | תמיכה ברקע שקוף בתצוגות מקדימות של ברקוד/QR. |
| SIGNATURENET‑5477 | ⚡ שיפור | תמיכה בתמונת שכבה עליונה לחתימות דיגיטליות עם צבע רקע (דגל foreground‑image). |
| SIGNATURENET‑5422 | ⚡ שיפור | הסרת אלגוריתמים הצפנה לא בטוחים (RC2, DES, TripleDES ומצבי AES חלשים). |
| SIGNATURENET‑5555 | 🐞 תיקון באג | תיקון חריגת type‑initializer ב‑GeneratePreview() עבור קבצי DOC בלינוקס. |
להלן מדריך טכני קצר לשינויים המשמעותיים ביותר.
1. חתימה דיגיטלית של תמונה (סטגנוגרפיה)
- החתימות מוסתרות בביטים הפחות משמעותיים של פיקסלי PNG/JPG.
- מוגנות בסיסמה, תואמות ל‑stream, ופועלות עם כל גודל תמונה ≥ 8 × 8 px.
חתימה על תמונה
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")
2. הצגה מותאמת לתצוגות מקדימות של ברקוד וקוד 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)
3. תמיכה בסיבוב לתצוגות מקדימות של ברקוד וקוד 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)
4. תמיכה בפורמט תמונה חדש – APNG ו‑TGA
קבצי APNG (PNG מונפש) ו‑TGA (Targa) יכולים כעת לשמש כ חתימות תמונה, להוכנס, להציג תצוגה מקדימה ולאמת בדיוק כמו PNG/JPG.
5. שקיפות רקע לתצוגות מקדימות של ברקוד/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)
6. תמיכה בתמונת שכבה עליונה לחתימות דיגיטליות
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}")
7. חיזוק אבטחה – הסרת אלגוריתמים לא בטוחים
RC2, DES, TripleDES ומצבי AES חלשים הוסרו מהמחסנית הקריפטוגרפית. רק אלגוריתמים מודרניים המאושרים על‑ידי NIST זמינים, מה שמשפר את רמת האבטחה ברירת המחדל של מסמכים חתומים.
8. אופטימיזציית שאילתות בסגנון 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")
9. תיקון קריסה של תצוגת 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
הישארו מעודכנים לגבי גרסאות עתידיות ושמרו עין על הבלוג הרשמי לקבלת טיפים לביצועים והדרכות של שיטות עבודה מומלצות.