Що нового у 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 пікселів.
Підписування зображення
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
Пошук 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()]
# 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.
Ресурси
- Повні нотатки про випуск: (link to the official release notes page, if available)
- Документація: https://docs.groupdocs.com/signature/python/
- Спільнота та підтримка: https://forum.groupdocs.com/c/signature/10
Слідкуйте за майбутніми випусками та слідкуйте за офіційним блогом, щоб отримувати поради щодо продуктивності та кращих практик.