Co je nového v GroupDocs.Signature pro Python 26.1 (leden 2026)
| ID | Kategorie | Souhrn |
|---|---|---|
| SIGNATURENET‑5528 | ✨ Funkce | Podpora a ověření digitálního podpisu obrazu (steganografické vložení LSB pro PNG a JPG). |
| SIGNATURENET‑5445 | ✨ Funkce | Adaptivní vykreslování náhledů podpisů čárových kódů a QR kódů – explicitní kontrola šířky/výšky. |
| SIGNATURENET‑5479 | ✨ Funkce | Podpora otáčení pro obrázky náhledů čárových kódů a QR kódů. |
| SIGNATURENET‑5478 | ✨ Funkce | Přidána podpora formátů obrázků APNG a TGA pro podpisy založené na obrázcích. |
| SIGNATURENET‑5500 | ⚡ Vylepšení | Optimalizace dotazů ve stylu LINQ pro vyhledávání a ověřování podpisů (filtrace predikáty). |
| SIGNATURENET‑5480 | ⚡ Vylepšení | Podpora průhlednosti pozadí pro náhledy čárových kódů/QR. |
| SIGNATURENET‑5477 | ⚡ Vylepšení | Podpora překryvu obrázku pro digitální podpisy s barvou pozadí (příznak foreground‑image). |
| SIGNATURENET‑5422 | ⚡ Vylepšení | Odstranění nedostatečně zabezpečených šifrovacích algoritmů (RC2, DES, TripleDES a slabé režimy AES). |
| SIGNATURENET‑5555 | 🐞 Oprava chyby | Opravená výjimka GeneratePreview() při typu inicializátoru pro soubory DOC v Linuxu. |
Níže je krátký technický průvodce nejvlivnějšími změnami.
1. Digitální podpis obrazu (steganografie)
- Podpisy jsou skryté v bitech nejmenší významnosti pixelů PNG/JPG.
- Chrání heslem, kompatibilní se streamy a funguje s libovolnou velikostí obrázku ≥ 8 × 8 px.
Podepsání obrázku
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)}")
Ověření podepsaného obrázku
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.")
Pokročilé ověření (úplný výpis dat)
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. Adaptivní vykreslování náhledů čárových kódů a QR kódů
Vývojáři nyní mohou zadat přesnou width a height pro generování náhledů, čímž se eliminují dřívější nesrovnalosti „automatické velikosti“.
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. Podpora otáčení pro náhledy čárových kódů a QR kódů
Nastavte rotation_angle (ve stupních) u možností čárového kódu/QR pro vykreslení otočených náhledů.
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. Nová podpora formátů obrázků – APNG a TGA
Soubory APNG (animovaný PNG) a TGA (Targa) lze nyní použít jako obrázkové podpisy, vkládat, zobrazovat v náhledech a ověřovat stejně jako PNG/JPG.
5. Průhlednost pozadí pro náhledy čárových kódů/QR
Nastavte vlastnost transparency (0 – 1) u možností čárového kódu/QR pro vytvoření náhledu s průhledným plátnem.
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. Podpora překryvu obrázku pro digitální podpisy
PdfDigitalSignatureAppearance nyní respektuje překryvný obrázek a barvu pozadí, aniž by obrázek zakryl. Řízení vrstev pomocí 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. Zpevnění zabezpečení – odstranění nedostatečných algoritmů
RC2, DES, TripleDES a slabé režimy AES byly odstraněny z kryptografického zásobníku. K dispozici jsou pouze moderní, NIST‑schválené algoritmy, což zlepšuje výchozí úroveň zabezpečení podepsaných dokumentů.
8. Optimalizace dotazů ve stylu LINQ
Vyhledávání a ověřování podpisů nyní přijímají predikátní funkce, které filtrují podpisy před těžkými zpracovatelskými kroky. To snižuje paměťovou náročnost a urychluje dávkové operace.
Vyhledávání s predikátem
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}")
Ověřování s predikátem
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. Opravený pád náhledu DOC na Linuxu
GeneratePreview() již nevyvolává TypeInitializerException při zpracování souborů Microsoft Word (.doc) na Linuxu, čímž obnovuje funkčnost náhledu napříč platformami.
Pokyny k aktualizaci
pip install --upgrade groupdocs-signature-net
Poznámka: Název balíčku
groupdocs-signature-netse používá pro wrapper Python‑via‑.NET.
Zdroje
- Úplné poznámky k vydání: (odkaz na oficiální stránku poznámek k vydání, pokud je k dispozici)
- Dokumentace: https://docs.groupdocs.com/signature/python/
- Komunita a podpora: https://forum.groupdocs.com/c/signature/10
Sledujte nadcházející vydání a mějte oči na oficiálním blogu pro tipy na výkon a osvědčené postupy.