Що нового в GroupDocs.Signature for Python 26.1 (січень 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‑файлів у Linux. |
Нижче наведено короткий технічний огляд найсуттєвіших змін.
1. Цифровий підпис зображень (стеганографія)
- Підписи приховуються у найменш значущих бітах пікселів PNG/JPG.
- Захищено паролем, сумісно з потоками, працює з будь‑яким розміром зображення ≥ 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‑подібних запитів
Пошук та верифікація підписів тепер приймають функції‑предикати, які фільтрують підписи до важких обробних етапів. Це знижує використання пам’яті та пришвидшує пакетні операції.
Пошук з предикатом
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 у Linux
GeneratePreview() більше не генерує TypeInitializerException під час обробки файлів Microsoft Word (.doc) у Linux, відновлюючи крос‑платформену функціональність попереднього перегляду.
Інструкції щодо оновлення
pip install --upgrade groupdocs-signature-net
Примітка: Ім’я пакету
groupdocs-signature-netвикористовується для обгортки Python‑через‑.NET.
Ресурси
- Повні нотатки про випуск: (посилання на офіційну сторінку нотаток про випуск, якщо доступно)
- Документація: https://docs.groupdocs.com/signature/python/
- Спільнота та підтримка: https://forum.groupdocs.com/c/signature/10
Слідкуйте за майбутніми випусками та слідкуйте за офіційним блогом, щоб отримувати поради щодо продуктивності та кращих практик.