Browse our Products

If so you can download any of the below versions for testing. The product will function as normal except for an evaluation limitation. At the time of purchase we provide a license file via email that will allow the product to work in its full capacity. If you would also like an evaluation license to test without any restrictions for 30 days, please follow the directions provided here.

GroupDocs.Signature for Python via .NET Downloads

banner

PyPI PyPI - Python Version

Product Page | Docs | Demos | API Reference | Blog | Free Support | Temporary License

GroupDocs.Signature for Python via .NET is an electronic signature API that adds text, image, digital (certificate), barcode, QR code, stamp, form-field and metadata signatures to documents, and finds, verifies, updates and removes the signatures a document already carries. One API covers 40+ formats: PDF, Word, Excel, PowerPoint, OpenDocument and image files. No Microsoft Office or Adobe Acrobat installation is needed.

Get Started

pip install groupdocs-signature-net
from groupdocs.signature import Signature
from groupdocs.signature.options import TextSignOptions

with Signature("document.pdf") as signature:
    options = TextSignOptions("John Smith")
    signature.sign("signed.pdf", options)

How It Works

The package is a self-contained Python wheel (about 140 MB) that bundles the .NET 10 runtime and the GroupDocs.Signature engine, so pip install is all it takes; no .NET installation is needed. On Linux the system needs ICU and fontconfig, plus libgdiplus and the Microsoft core fonts for some features (see System Requirements below). The wheel works with Python 3.5 - 3.14 on Windows, Linux and macOS (Intel and Apple Silicon).

Features

  • Eight signature types: text, image, digital (PFX certificates), barcode, QR code, stamp, form-field and metadata signatures, one at a time or several in one call.
  • Search, verify, update and delete the signatures a document already carries.
  • Digital signatures with certificates from a file or a stream; PDF signatures use SHA-256 and are verified cryptographically.
  • Appearance control: position, size, alignment, margins, fonts, colors, borders, backgrounds and transparency.
  • Previews: render document pages and individual signatures to images through your own Python callbacks.
  • Custom logic in Python: encrypt QR code and metadata payloads, plug in a logger, or sign with an external key (HSM, cloud key vault) through custom_sign_hash.
  • Document inspection: file type, size, page count and page sizes; password-protected documents.
  • Cross-platform: Windows x64, Linux x64, macOS x64/ARM64.

Common Tasks

  • Stamp a name, a date or an approval mark on contracts as they move through a workflow
  • Sign PDF, Word and Excel files with a company certificate (.pfx)
  • Put QR codes and barcodes with invoice or shipment IDs on documents
  • Check that incoming documents carry the signatures you expect before processing them
  • Render page thumbnails for a review or signing UI
  • Store hidden metadata signatures for audit trails without changing how a document looks

Supported File Formats

  • Word Processing: DOC, DOCX, DOCM, DOT, DOTX, DOTM, ODT, OTT
  • Spreadsheets: XLS, XLSX, XLSB, XLSM, XLTX, XLTM, ODS, OTS
  • Presentations: PPT, PPTX, PPTM, PPS, PPSX, PPSM, POTX, POTM, ODP, OTP
  • PDF: PDF
  • Images: BMP, GIF, JPG, JPEG, PNG, SVG, TIF, TIFF, WEBP, WMF, PSD, DJVU, CDR, CMX

Supports 40+ file formats. Which signature types each format takes is listed in supported file formats.

Examples

Sign with text

from groupdocs.signature import Signature
from groupdocs.signature.options import TextSignOptions

with Signature("contract.pdf") as signature:
    options = TextSignOptions("John Smith")
    options.left = 100
    options.top = 100
    result = signature.sign("contract_signed.pdf", options)
    print("Signatures added:", len(result.succeeded))

Sign with an image

from groupdocs.signature import Signature
from groupdocs.signature.options import ImageSignOptions

with Signature("contract.docx") as signature:
    options = ImageSignOptions("signature.png")
    options.left = 50
    options.top = 50
    options.width = 120
    options.height = 50
    signature.sign("contract_signed.docx", options)

Sign with a QR code and a barcode in one call

from groupdocs.signature import Signature
from groupdocs.signature.domain import BarcodeTypes, QrCodeTypes
from groupdocs.signature.options import BarcodeSignOptions, QrCodeSignOptions

with Signature("invoice.pdf") as signature:
    qr_code = QrCodeSignOptions("Invoice 12345 approved by John Smith")
    qr_code.encode_type = QrCodeTypes.QR
    qr_code.left = 50
    qr_code.top = 50

    barcode = BarcodeSignOptions("INV-12345")
    barcode.encode_type = BarcodeTypes.CODE128
    barcode.left = 50
    barcode.top = 250

    result = signature.sign("invoice_signed.pdf", [qr_code, barcode])
    print("Signatures added:", len(result.succeeded))

Sign with a digital certificate

from groupdocs.signature import Signature
from groupdocs.signature.options import DigitalSignOptions

with Signature("contract.pdf") as signature:
    options = DigitalSignOptions("certificate.pfx")
    options.password = "1234567890"
    options.reason = "Approved"
    options.contact = "John Smith"
    options.location = "Head office"
    signature.sign("contract_signed.pdf", options)

Since engine 26.9, an expired or not-yet-valid certificate is rejected; set options.allow_expired = True (or allow_not_yet_valid) only when you mean to sign with one.

Search for signatures

from groupdocs.signature import Signature
from groupdocs.signature.options import BarcodeSearchOptions, QrCodeSearchOptions, TextSearchOptions

with Signature("signed.pdf") as signature:
    result = signature.search([TextSearchOptions(), QrCodeSearchOptions(), BarcodeSearchOptions()])
    for found in result.signatures:
        print(found.signature_type.name, "on page", found.page_number)

Pass a list of search options to get a SearchResult with .signatures; a single options object returns a plain list.

Verify a signature

from groupdocs.signature import Signature
from groupdocs.signature.options import TextVerifyOptions

with Signature("signed.pdf") as signature:
    result = signature.verify(TextVerifyOptions("John Smith"))
    print("Signed by John Smith:", result.is_valid)

Generate page previews

from groupdocs.signature import Signature
from groupdocs.signature.options import PreviewOptions

def create_page_stream(page_data):
    return open("page-%d.png" % page_data.page_number, "wb")

def release_page_stream(page_data, page_stream):
    page_stream.close()

with Signature("document.pdf") as signature:
    signature.generate_preview(PreviewOptions(create_page_stream, release_page_stream))

Wherever the engine takes a callback, pass a Python function or object: signature previews (PreviewSignatureOptions), loggers (SignatureSettings(logger)), data_encryption and custom_sign_hash work the same way, and AGENTS.md in the package lists the shapes. Preview page numbers are 0-based.

Get document info

from groupdocs.signature import Signature

with Signature("contract.docx") as signature:
    info = signature.get_document_info()
    print("Format:", info.file_type.file_format)
    print("Pages:", info.page_count)
    print("Size:", info.size, "bytes")

Load from a stream

import io

from groupdocs.signature import Signature
from groupdocs.signature.options import TextSignOptions

with open("contract.pdf", "rb") as source:
    with Signature(source) as signature:
        output = io.BytesIO()
        signature.sign(output, TextSignOptions("John Smith"))
        print("Signed document:", len(output.getvalue()), "bytes")

Security Defaults

The 26.9 engine rejects expired or not-yet-valid signing certificates (DigitalSignOptions.allow_expired / allow_not_yet_valid opt back in), does not load external resources (LoadOptions.skip_external_resources, whitelisted_resources), signs PDFs with SHA-256 and verifies PDF signatures cryptographically.

AI Agent & LLM Friendly

This package is designed for seamless integration with AI agents, LLMs, and automated code generation tools.

  • AGENTS.md in the package - AI coding assistants (Claude Code, Cursor, GitHub Copilot) auto-discover the API surface, usage patterns, and troubleshooting tips from the installed package
  • MCP server - connect your AI tool to GroupDocs documentation for on-demand API lookups:
    { "mcpServers": { "groupdocs-docs": { "url": "https://docs.groupdocs.com/mcp" } } }
    
  • Signing MCP server - when the agent itself should sign and verify documents, use the GroupDocs.Signature MCP server (a .NET server that also runs from Docker; a Python launcher is planned)
  • Machine-readable docs - full documentation available as plain text for RAG and LLM context:
    • Single file: https://docs.groupdocs.com/signature/python-net/llms-full.txt
    • Per page: append .md to any docs URL

Evaluation Mode

The API works without a license in evaluation mode, with these limitations:

  • Documents of more than 2 pages are refused: every operation raises GroupDocsSignatureException (“The number of pages cannot exceed 2 in a trial version”).
  • Signed pages carry the line “Created with evaluation version of GroupDocs.Signature”.
  • Search results are masked, so verifying text, barcode and QR code signatures fails.

To remove these limitations, apply a license or request a temporary license:

from groupdocs.signature import License
License().set_license("path/to/license.lic")

Or set the environment variable (auto-applied at import):

export GROUPDOCS_LIC_PATH="path/to/license.lic"

A damaged or wrong license file is accepted without an error and leaves the library in evaluation mode, so check a signed page for the evaluation line.

Troubleshooting

IssuePlatformFix
The type initializer for 'Gdip' threw an exception / DllNotFoundException: libgdiplus while signingLinux/macOSInstall libgdiplus: apt-get install libgdiplus / brew install mono-libgdiplus. Only stamp and text-as-image signatures, signatures on PowerPoint and image files, borders and transparency, and text/stamp previews need it; import and the other signatures work without it
Font Times New Roman was not found / Font Arial was not foundLinuxInstall the Microsoft core fonts: apt-get install ttf-mscorefonts-installer (Debian: enable contrib), then fc-cache -f
The process aborts on first use with Couldn't find a valid ICU packageLinuxInstall ICU: apt-get install libicu-dev; do NOT set DOTNET_SYSTEM_GLOBALIZATION_INVARIANT
is not a supported wheel on this platform, or No matching distribution foundLinux/macOSThe OS is older than the wheel needs (glibc 2.27, macOS 12), or pip is older than 20.3: python -m pip install --upgrade pip. On an Intel Mac, a Python built against an old SDK reports macOS 10.16 - use pip 24.1+ or SYSTEM_VERSION_COMPAT=0 pip install groupdocs-signature-net
The signing certificate expired on ...AllSince 26.9 expired certificates are rejected; renew it, or set allow_expired = True on the DigitalSignOptions
The number of pages cannot exceed 2 in a trial version, or search returns an evaluation notice instead of the signature’s textAllNo license is applied: set GROUPDOCS_LIC_PATH or call License().set_license(path)

System Requirements

  • Python 3.5 - 3.14, pip 20.3 or newer
  • Windows x64, Linux x64, macOS x64/ARM64 - 64-bit Python only; there is no 32-bit Windows wheel
  • Linux: glibc 2.27 or newer (e.g. Ubuntu 18.04+, Debian 10+, RHEL 8+), plus ICU, fontconfig, libgdiplus and the Microsoft core fonts: apt-get install libicu-dev libfontconfig1 libgdiplus ttf-mscorefonts-installer (on Debian, enable the contrib component first). libgdiplus is needed for stamp and text-as-image signatures, for barcode, QR code and image signatures with a border or transparency, for any signature on PowerPoint and image files, and for text and stamp signature previews; the core fonts for PDF text and digital signatures, whose default fonts are Times New Roman and Arial.
  • macOS 12 or newer, Intel or Apple Silicon: brew install mono-libgdiplus for the same features.

Upgrading from 26.1

26.1 was built by an earlier toolchain; the modules are the same, but check these:

  • A few names changed: z_order -> zorder, x_ad_es_type -> xad_es_type, h_corner_radius / v_corner_radius -> hcorner_radius / vcorner_radius, FileType.G_ZIP -> GZIP, and nine BarcodeTypes constants lost an underscore (GS1_CODE_128 -> GS1_CODE128).
  • Assigning an attribute a class does not have now raises AttributeError with a suggestion; 26.1 accepted it silently, so a renamed property was simply ignored.
  • Engine errors raise GroupDocsSignatureException (or IncorrectPasswordException / PasswordRequiredException) instead of RuntimeError("Proxy error(...)"), and they do not derive from RuntimeError.
  • Preview page numbers are 0-based (page_data.page_number is 0 for the first page).
  • GROUPDOCS_LIC_PATH is applied at import.

The release notes have the full list.

More Resources

Also available for other platforms: .NET | Java | Node.js


Product Page | Docs | Demos | API Reference | Examples | Blog | Search | Free Support | Temporary License


Direct Download

Icons

GroupDocs.Signature for Python via .NET 26.10 Windows

Self-contained Python wheel of GroupDocs.Signature 26.10 for Windows (x64). Compatible with Python 3.5-3.14. No external dependencies required. Electronic signatures for documents.

Added: 6/10/2026 Downloads:

Download

File Size: 133.05MB

Icons

GroupDocs.Signature for Python via .NET 26.10 Linux

Self-contained Python wheel of GroupDocs.Signature 26.10 for Linux (x64). Compatible with Python 3.5-3.14. Requires ICU (libicu), libgdiplus, libfontconfig1, and fonts (e.g. ttf-mscorefonts-installer). Electronic signatures for documents.

Added: 6/10/2026 Downloads:

Download

File Size: 132.43MB

Icons

GroupDocs.Signature for Python via .NET 26.10 macOS amd64

Self-contained Python wheel of GroupDocs.Signature 26.10 for macOS amd64 (Intel). Compatible with Python 3.5-3.14. Requires mono-libgdiplus (brew install mono-libgdiplus). Electronic signatures for documents.

Added: 6/10/2026 Downloads:

Download

File Size: 134.41MB

Icons

GroupDocs.Signature for Python via .NET 26.10 macOS arm64

Self-contained Python wheel of GroupDocs.Signature 26.10 for macOS arm64 (Apple Silicon). Compatible with Python 3.5-3.14. Requires mono-libgdiplus (brew install mono-libgdiplus). Electronic signatures for documents.

Added: 6/10/2026 Downloads:

Download

File Size: 132.3MB

Icons

GroupDocs.Signature for Python via .NET 26.1 for Linux (x64)

This wheel contains GroupDocs.Signature for Python via .NET version 26.1, built for Linux and targeting the x64 architecture.

Added: 12/1/2026 Downloads:

Download

File Size: 140.82MB

Icons

GroupDocs.Signature for Python via .NET 26.1 for macOS (x64)

This wheel contains GroupDocs.Signature for Python via .NET version 26.1, built for macOS and targeting the x64 architecture.

Added: 12/1/2026 Downloads:

Download

File Size: 137.79MB

Icons

GroupDocs.Signature for Python via .NET 26.1 for macOS (ARM64)

This wheel contains GroupDocs.Signature for Python via .NET version 26.1, built for macOS and targeting the ARM64 architecture.

Added: 12/1/2026 Downloads:

Download

File Size: 128.45MB

Icons

GroupDocs.Signature for Python via .NET 26.1 Windows AMD64

This wheel contains GroupDocs.Signature for Python via .NET version 26.1, built for Windows and targeting the AMD64 architecture.

Added: 12/1/2026 Downloads:

Download

File Size: 128.17MB

Icons

GroupDocs.Signature for Python via .NET 26.1 Windows x32

This wheel contains GroupDocs.Signature version 26.1, compatible with Python 3 and optimized for Windows 32-bit systems.

Added: 12/1/2026 Downloads:

Download

File Size: 122.03MB

Icons

GroupDocs.Signature for Python via .NET 25.4 Windows AMD64

This wheel contains GroupDocs.Signature for Python via .NET version 25.4, built for Windows and targeting the AMD64 architecture.

Added: 30/4/2025 Downloads:

Download

File Size: 125.31MB

Icons

GroupDocs.Signature for Python via .NET 25.4.0 Windows x32

This wheel contains GroupDocs.Signature version 25.4.0, compatible with Python 3 and optimized for Windows 32-bit systems.

Added: 30/4/2025 Downloads:

Download

File Size: 119.3MB

Icons

GroupDocs.Signature for Python via .NET 24.11 Windows AMD64

This wheel contains GroupDocs.Signature for Python via .NET version 24.11, built for Windows and targeting the AMD64 architecture.

Added: 20/1/2025 Downloads:

Download

File Size: 162.35MB

Icons

GroupDocs.Signature for Python via .NET 24.11.0 Windows x32

This wheel contains GroupDocs.Signature version 24.11.0, compatible with Python 3 and optimized for Windows 32-bit systems.

Added: 20/1/2025 Downloads:

Download

File Size: 156.68MB