Neuigkeiten in GroupDocs.Signature für Python 26.1 (Januar 2026)
| ID | Kategorie | Zusammenfassung |
|---|---|---|
| SIGNATURENET‑5528 | ✨ Funktion | Unterstützung und Validierung von Bilddigitalsignaturen (steganografisches LSB‑Einbetten für PNG & JPG). |
| SIGNATURENET‑5445 | ✨ Funktion | Adaptives Rendern für Barcode‑ und QR‑Code‑Signaturvorschauen – explizite Breiten-/Höhenkontrolle. |
| SIGNATURENET‑5479 | ✨ Funktion | Unterstützung von Drehungen für Barcode‑ und QR‑Code‑Vorschaubilder. |
| SIGNATURENET‑5478 | ✨ Funktion | Unterstützung für die Bildformate APNG und TGA bei bildbasierten Signaturen hinzugefügt. |
| SIGNATURENET‑5500 | ⚡ Verbesserung | LINQ‑ähnliche Abfrageoptimierung für Signatursuche & ‑verifikation (Prädikat‑Filterung). |
| SIGNATURENET‑5480 | ⚡ Verbesserung | Unterstützung von Hintergrundtransparenz für Barcode/QR‑Vorschauen. |
| SIGNATURENET‑5477 | ⚡ Verbesserung | Unterstützung von Overlay‑Bildern für digitale Signaturen mit Hintergrundfarbe (Vordergrund‑Bild‑Flag). |
| SIGNATURENET‑5422 | ⚡ Verbesserung | Entfernung unsicherer Verschlüsselungsalgorithmen (RC2, DES, TripleDES und schwache AES‑Modi). |
| SIGNATURENET‑5555 | 🐞 Fehlerbehebung | Behoben: GeneratePreview() löste eine TypeInitializerException für DOC‑Dateien unter Linux aus. |
Im Folgenden ein kurzer technischer Überblick über die wirkungsvollsten Änderungen.
1. Bilddigitalsignatur (Steganografie)
- Signaturen werden in den niederwertigsten Bits der PNG/JPG‑Pixel versteckt.
- Passwortgeschützt, stream‑kompatibel und funktioniert mit jeder Bildgröße ≥ 8 × 8 px.
Signieren eines Bildes
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)}")
Verifizieren eines signierten Bildes
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.")
Erweiterte Validierung (vollständige Datenextraktion)
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. Adaptives Rendern für Barcode‑ & QR‑Code‑Vorschauen
Entwickler können nun genaue width‑ und height‑Werte für die Vorschaugenerierung angeben, wodurch frühere „Auto‑Size“‑Inkonsistenzen vermieden werden.
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. Drehunterstützung für Barcode‑ & QR‑Vorschauen
Setzen Sie rotation_angle (Grad) in den Barcode/QR‑Optionen, um gedrehte Vorschauen zu rendern.
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. Neue Bildformatunterstützung – APNG & TGA
APNG‑ (animiertes PNG) und TGA‑ (Targa) Dateien können jetzt als Bildsignaturen verwendet, eingefügt, vorgeschaut und genau wie PNG/JPG verifiziert werden.
5. Hintergrundtransparenz für Barcode/QR‑Vorschauen
Setzen Sie die Eigenschaft transparency (0 – 1) in den Barcode/QR‑Optionen, um Vorschauen mit transparentem Canvas zu erzeugen.
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. Unterstützung von Overlay‑Bildern für digitale Signaturen
PdfDigitalSignatureAppearance unterstützt nun ein Overlay‑Bild und eine Hintergrundfarbe, ohne das Bild zu verdecken. Die Ebenensteuerung erfolgt über 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. Sicherheitsverbesserung – Entfernung unsicherer Algorithmen
RC2, DES, TripleDES und schwache AES‑Modi wurden aus dem kryptografischen Stack entfernt. Nur moderne, NIST‑zertifizierte Algorithmen stehen zur Verfügung, wodurch die Standardsicherheit signierter Dokumente verbessert wird.
8. LINQ‑artige Abfrageoptimierung
Die Signatur‑Methoden search und verify akzeptieren nun Prädikat‑Funktionen, die Signaturen vor den rechenintensiven Verarbeitungsschritten filtern. Das reduziert den Speicherverbrauch und beschleunigt Batch‑Operationen.
Suche mit einem Prädikat
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}")
Verifikation mit einem Prädikat
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. Behobener Linux‑DOC‑Vorschau‑Absturz
GeneratePreview() wirft unter Linux beim Verarbeiten von Microsoft‑Word‑Dateien (.doc) keine TypeInitializerException mehr, wodurch die plattformübergreifende Vorschaufunktion wiederhergestellt wird.
Upgrade‑Anweisungen
pip install --upgrade groupdocs-signature-net
Hinweis: Der Paketname
groupdocs-signature-netwird für die Python‑via‑.NET‑Umgebung verwendet.
Ressourcen
- Vollständige Versionshinweise: (link to the official release notes page, if available)
- Dokumentation: https://docs.groupdocs.com/signature/python/
- Community & Support: https://forum.groupdocs.com/c/signature/10
Bleiben Sie dran für kommende Releases und behalten Sie den offiziellen Blog im Auge für Performance‑Tipps und Best‑Practice‑Leitfäden.