Wat is nieuw in GroupDocs.Signature voor Python 26.1 (januari 2026)
| ID | Categorie | Samenvatting |
|---|---|---|
| SIGNATURENET‑5528 | ✨ Functie | Ondersteuning en validatie van digitale afbeeldinghandtekening (steganografische LSB‑embedding voor PNG & JPG). |
| SIGNATURENET‑5445 | ✨ Functie | Adaptieve weergave voor barcode‑ en QR‑code‑handtekeningvoorbeelden – expliciete breedte/hoogte‑regeling. |
| SIGNATURENET‑5479 | ✨ Functie | Rotatieondersteuning voor barcode‑ en QR‑code‑voorbeeldafbeeldingen. |
| SIGNATURENET‑5478 | ✨ Functie | Ondersteuning toegevoegd voor APNG‑ en TGA‑afbeeldingsformaten voor op afbeeldingen gebaseerde handtekeningen. |
| SIGNATURENET‑5500 | ⚡ Verbetering | LINQ‑achtige query‑optimalisatie voor handtekeningzoek‑ en verificatie (predicaatfiltering). |
| SIGNATURENET‑5480 | ⚡ Verbetering | Ondersteuning voor achtergrondtransparantie bij barcode/QR‑voorbeelden. |
| SIGNATURENET‑5477 | ⚡ Verbetering | Overlay‑afbeeldingsondersteuning voor digitale handtekeningen met achtergrondkleur (voorgrond‑afbeeldingsvlag). |
| SIGNATURENET‑5422 | ⚡ Verbetering | Verwijdering van onveilige versleutelingsalgoritmen (RC2, DES, TripleDES en zwakke AES‑modi). |
| SIGNATURENET‑5555 | 🐞 Bugfix | Opgeloste GeneratePreview() type‑initializer‑exception voor DOC‑bestanden op Linux. |
Hieronder volgt een korte technische walkthrough van de meest impactvolle wijzigingen.
1. Digitale afbeeldinghandtekening (steganografie)
- Handtekeningen zijn verborgen in de minst‑significante bits van PNG/JPG‑pixels.
- Wachtwoordbeveiligd, stream‑compatibel en werkt met elke afbeeldinggrootte ≥ 8 × 8 px.
Een afbeelding ondertekenen
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)}")
Een ondertekende afbeelding verifiëren
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.")
Geavanceerde validatie (volledige gegevens‑extractie)
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. Adaptieve weergave voor Barcode‑ en QR‑code‑voorbeelden
Ontwikkelaars kunnen nu exacte width en height opgeven voor het genereren van voorbeelden, waardoor de vorige “auto‑size” inconsistenties worden geëlimineerd.
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. Rotatieondersteuning voor Barcode‑ en QR‑voorbeelden
Stel rotation_angle (graden) in op barcode/QR‑opties om geroteerde voorbeelden weer te geven.
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. Nieuwe afbeeldingformaatondersteuning – APNG & TGA
APNG (geanimeerde PNG) en TGA (Targa) bestanden kunnen nu worden gebruikt als afbeeldinghandtekeningen, ingevoegd, bekeken en geverifieerd net als PNG/JPG.
5. Achtergrondtransparantie voor Barcode/QR‑voorbeelden
Stel de transparency‑eigenschap (0 – 1) in op barcode/QR‑opties om voorbeelden met een transparante achtergrond te genereren.
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. Overlay‑afbeeldingsondersteuning voor digitale handtekeningen
PdfDigitalSignatureAppearance ondersteunt nu een overlay‑afbeelding en een achtergrondkleur zonder de afbeelding te verbergen. Beheers de laagverdeling via 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. Beveiligingsverharding – verwijdering van onveilige algoritmen
RC2, DES, TripleDES en zwakke AES‑modi zijn verwijderd uit de cryptografische stack. Alleen moderne, NIST‑goedgekeurde algoritmen zijn beschikbaar, wat de standaard beveiligingspositie van ondertekende documenten verbetert.
8. LINQ‑achtige query‑optimalisatie
Handtekening search en verify accepteren nu predicaatfuncties die handtekeningen voor de zwaardere verwerkingsstappen filteren. Dit vermindert het geheugenverbruik en versnelt batch‑operaties.
Zoeken met een predicaat
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}")
Verifiëren met een predicaat
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. Opgeloste Linux DOC‑voorbeeldcrash
GeneratePreview() werpt niet meer een TypeInitializerException bij het verwerken van Microsoft Word (.doc) bestanden op Linux, waardoor de cross‑platform voorbeeldfunctionaliteit wordt hersteld.
Upgrade‑instructies
pip install --upgrade groupdocs-signature-net
Opmerking: De pakketnaam
groupdocs-signature-networdt gebruikt voor de Python‑via‑.NET wrapper.
Resources
- Full release notes: (link to the official release notes page, if available)
- Documentation: https://docs.groupdocs.com/signature/python/
- Community & Support: https://forum.groupdocs.com/c/signature/10
Blijf op de hoogte van aankomende releases en houd de officiële blog in de gaten voor prestatietips en best‑practice‑gidsen.