מה חדש ב- GroupDocs.Signature for Python 26.1 (January 2026)
| ID | קטגוריה | סיכום |
|---|---|---|
| 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 | 🐞 תיקון באג | תוקן חריג GeneratePreview() בעת יצירת תצוגה מקדימה של קבצי DOC בלינוקס. |
להלן סיור טכני קצר של השינויים המשמעותיים ביותר.
1. חתימה דיגיטלית של תמונה (סטגנוגרפיה)
- החתימות מוסתרות בביטיים הפחות משמעותיים של פיקסלי PNG/JPG.
- מוגנות בסיסמה, תואמות למזרנים, ועובדות עם כל גודל תמונה ≥ 8 × 8 px.
Signing an image
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)}")
Verifying a signed image
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.")
Advanced validation (full data extraction)
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 מדויקים ליצירת תצוגה מקדימה, ובכך להיפטר מהחוסר התאום של ה‑“auto‑size” הקודם.
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
כעת ניתן להעביר פונקציות תנאי (predicate) ל‑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()]
# שמור רק על חתימות טקסט שמכילות את המילה "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")
# אמת רק חתימות בעמוד 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
הישארו מעודכנים לגבי גרסאות עתידיות והקפידו לעקוב אחרי הבלוג הרשמי לקבלת טיפים לביצועים והנחיות של מיטב השיטות.