GroupDocs.Signature for Python 26.1 の新機能 (2026年1月)

ID カテゴリ 概要
SIGNATURENET‑5528 機能 画像デジタル署名のサポートと検証(PNG と JPG のステガノグラフィ的 LSB 埋め込み)。
SIGNATURENET‑5445 機能 バーコードおよび QR コード署名プレビューの適応レンダリング - 幅・高さを明示的に指定可能。
SIGNATURENET‑5479 機能 バーコードおよび QR コードプレビュー画像の回転サポート。
SIGNATURENET‑5478 機能 画像ベースの署名で使用できる APNG と TGA 画像形式の対応を追加。
SIGNATURENET‑5500 強化 署名検索と検証のための LINQ スタイルクエリ最適化(述語フィルタリング)。
SIGNATURENET‑5480 強化 バーコード/QR プレビューの背景透過サポート。
SIGNATURENET‑5477 強化 背景色付きデジタル署名のオーバーレイ画像サポート(前景画像フラグ)。
SIGNATURENET‑5422 強化 安全でない暗号アルゴリズム(RC2、DES、TripleDES、弱い AES モード)を除去。
SIGNATURENET‑5555 🐞 バグ修正 GeneratePreview() が Linux 上の DOC ファイルで発生していた型初期化子例外を修正。

以下に、最も影響の大きい変更点の短い技術的ウォークスルーを示します。

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 コードプレビューの適応レンダリング

開発者はプレビュー生成時に正確な widthheight を指定できるようになり、従来の「自動サイズ」不整合が解消されます。

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)

適応型 QR プレビュー

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 プレビューの背景透過

バーコード/QR オプションの transparency プロパティ(0 〜 1)を設定すると、透明なキャンバスを持つプレビューを生成できます。

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 スタイルのクエリ最適化

署名の searchverify は、重い処理ステップの に署名をフィルタリングする 述語関数 を受け取れるようになりました。これによりメモリ使用量が削減され、バッチ処理が高速化します。

述語付き検索

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. Linux の DOC プレビュークラッシュ修正

GeneratePreview() は、Linux 上で Microsoft Word(.doc)ファイルを処理する際に TypeInitializerException を投げなくなり、クロスプラットフォームのプレビュー機能が復元されました。


アップグレード手順

pip install --upgrade groupdocs-signature-net

注意: パッケージ名 groupdocs-signature-net は Python から .NET ラッパーを介して使用する際の名前です。


リソース

今後のリリースをお楽しみに。また、パフォーマンスのヒントやベストプラクティスガイドについては公式ブログをご覧ください。