Product Page | Documentation | Free Support | Temporary License
Add electronic signatures to documents - text, image, barcode, QR code, digital and stamp signatures.
Key Features
- Text, image, barcode, QR code, stamp, metadata, form-field and digital (certificate) signatures
- Search, verify, update and delete existing signatures
- Document page previews and signature previews, written through your own Python callbacks
- Custom encryption for QR code and metadata signatures, custom loggers, and external signing (HSM, Azure Key Vault) through a Python
custom_sign_hash - PDF, Word, Excel, PowerPoint, OpenDocument and image formats
Installation
pip install groupdocs-signature-net
Quick Start
from groupdocs.signature import Signature
from groupdocs.signature.options import TextSignOptions
with Signature("document.pdf") as sig:
options = TextSignOptions("Approved")
sig.sign("signed.pdf", options)
Previews and other callbacks
Wherever the engine takes a callback, pass a Python function or object:
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 sig:
sig.generate_preview(PreviewOptions(create_page_stream, release_page_stream))
The same works for signature previews (PreviewSignatureOptions), loggers (SignatureSettings(logger)), data_encryption and custom_sign_hash; AGENTS.md in the package lists the shapes.
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.
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 thecontribcomponent 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-libgdiplusfor the same features.
Troubleshooting
| Error | Platform | Fix |
|---|---|---|
The type initializer for 'Gdip' threw an exception / DllNotFoundException: libgdiplus |
Linux/macOS | Install libgdiplus: apt-get install libgdiplus / brew install mono-libgdiplus |
Font Times New Roman was not found / Font Arial was not found |
Linux | Install the Microsoft core fonts: apt-get install ttf-mscorefonts-installer (Debian: enable contrib), then fc-cache -f |
Couldn't find a valid ICU package, or the process aborts on first use |
Linux | Install 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 found |
Linux/macOS | The 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 ... |
all | Since 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 text |
all | No license is applied: set GROUPDOCS_LIC_PATH or call License().set_license(path). A damaged or wrong license file is accepted without an error, so check a signed page for the evaluation line |
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 nineBarcodeTypesconstants lost an underscore (GS1_CODE_128→GS1_CODE128). - Assigning an attribute a class does not have now raises
AttributeErrorwith a suggestion; 26.1 accepted it silently, so a renamed property was simply ignored. - Engine errors raise
GroupDocsSignatureException(orIncorrectPasswordException/PasswordRequiredException) instead ofRuntimeError("Proxy error(...)"), and they do not derive fromRuntimeError. - Preview page numbers are 0-based (
page_data.page_numberis 0 for the first page). GROUPDOCS_LIC_PATHis applied at import.
The release notes have the full list.
AI Agent & LLM Friendly
This package is designed for seamless integration with AI agents, LLMs, and automated code generation tools.
AGENTS.mdin 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" } } }
- 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
.mdto any docs URL
- Single file:
Metadata
Release files for groupdocs-signature-net 26.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| groupdocs_signature_net-26.10.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| groupdocs_signature_net-26.10.0-py3-none-manylinux_2_27_x86_64.whl | Python 3 | none | Linux glibc 2.27+ x86-64 | Details |
| groupdocs_signature_net-26.10.0-py3-none-macosx_12_0_x86_64.whl | Python 3 | none | macOS 12.0+ x86-64 | Details |
| groupdocs_signature_net-26.10.0-py3-none-macosx_12_0_arm64.whl | Python 3 | none | macOS 12.0+ ARM64 | Details |
Total release size: 558.0 MB
Release files / groupdocs_signature_net-26.10.0-py3-none-win_amd64.whl
| Download URL | groupdocs_signature_net-26.10.0-py3-none-win_amd64.whl |
|---|---|
| Size | 139.5 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c1ceae9d0b6c660f3dfcff8fa8ec9a9ba7a8627d8c6d3db2fc55a9235575580a
|
|
BLAKE2b-256 checksum How to use checksums |
08b557b6516954a5eea7c1df765c4001a426d7885df5bfbef0d420256bb0a16f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / groupdocs_signature_net-26.10.0-py3-none-manylinux_2_27_x86_64.whl
| Download URL | groupdocs_signature_net-26.10.0-py3-none-manylinux_2_27_x86_64.whl |
|---|---|
| Size | 138.9 MB |
| Tags | Linux glibc 2.27+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
f4452e913f529321c763ffc723326b2af53e7a46f6eef6032b815bc0f0752dba
|
|
BLAKE2b-256 checksum How to use checksums |
f87b79a7aec46743db4c6cbab48a39390568ca2ab2467dbc1c83bb2c6e0f0c65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / groupdocs_signature_net-26.10.0-py3-none-macosx_12_0_x86_64.whl
| Download URL | groupdocs_signature_net-26.10.0-py3-none-macosx_12_0_x86_64.whl |
|---|---|
| Size | 140.9 MB |
| Tags | Python 3 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
3f0b01d3c7e27ad108c96ff224d14bb9daefa0e60b142dc392a0bbe9a36fb705
|
|
BLAKE2b-256 checksum How to use checksums |
d4c41ca86150e615312297d5f8dec285eb0037d4d9b575f1ff16881094b4ed3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / groupdocs_signature_net-26.10.0-py3-none-macosx_12_0_arm64.whl
| Download URL | groupdocs_signature_net-26.10.0-py3-none-macosx_12_0_arm64.whl |
|---|---|
| Size | 138.7 MB |
| Tags | Python 3 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
091afb172e42546fb667c69a8ec1283121d2808198eeed8bcb50e11058dd75e7
|
|
BLAKE2b-256 checksum How to use checksums |
d8eb4f31941b5f314eee19b94fe3b124b89df731bcaae1befd1139abf5838ac7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|