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.
If you experience errors, when you try to download a file, make sure your network policies (enforced by your company or ISP) allow downloading ZIP and/or MSI files.
Product Page | Docs | Demos | API Reference | Blog | Free Support | Temporary License
GroupDocs.Merger for Python via .NET is a document-manipulation API for combining and reorganizing documents. Join multiple files into one, split a document into several, and reorder, swap, move, rotate, extract, or remove pages — across Word, Excel, PowerPoint, PDF, Visio, images, eBooks, email, and text formats through one unified API, with no MS Office, OpenOffice, or other external software required. It also manages document passwords, changes page orientation, and renders page previews.
pip install groupdocs-merger-net
from groupdocs.merger import Merger
with Merger("document1.docx") as merger:
merger.join("document2.docx")
merger.save("merged.docx")
The package is a self-contained Python wheel that bundles the embedded .NET runtime and every native dependency (SkiaSharp, Aspose.Drawing) needed to load, manipulate, and save documents. No external software installation is required — just pip install and start merging. The wheel works across Python 3.5 – 3.14 on Windows, Linux, and macOS (Intel + Apple Silicon).
For a complete list, see supported formats.
| Category | Formats |
|---|---|
| Word Processing | DOC, DOCX, DOCM, DOT, DOTX, DOTM, ODT, OTT, RTF, TXT |
| Spreadsheets | XLS, XLSX, XLSM, XLSB, XLT, XLTX, XLTM, XLAM, ODS, CSV, TSV |
| Presentations | PPT, PPTX, PPTM, PPS, PPSX, PPSM, POT, POTX, POTM, ODP, OTP |
| Fixed-Layout | PDF, XPS, TEX |
| Visio Diagrams | VSD, VSDX, VSDM, VSS, VSSX, VSSM, VST, VSTX, VSTM, VDX, VSX, VTX |
| Images | BMP, JPG, JPEG, PNG, GIF, TIF, TIFF, SVG, SVGZ, EMF, EMZ |
| eBooks & Web | EPUB, HTML, MHT, MHTML, ONE |
from groupdocs.merger import Merger
with Merger("document1.docx") as merger:
merger.join("document2.docx")
merger.save("merged.docx")
from groupdocs.merger import Merger
with Merger("document.pdf") as merger:
info = merger.get_document_info()
print("Type:", info.type.file_format)
print("Pages:", info.page_count)
print("Size:", info.size, "bytes")
for page in info.pages:
print(f" page {page.number}: {page.width}x{page.height}")
from groupdocs.merger import Merger
from groupdocs.merger.domain.options import SplitOptions
with Merger("multipage.pdf") as merger:
merger.split(SplitOptions("page_{0}.pdf", [1, 2, 3]))
from groupdocs.merger import Merger
from groupdocs.merger.domain.options import (
ExtractOptions, RemoveOptions, SwapOptions, RotateOptions, RotateMode,
)
with Merger("document.pdf") as merger:
merger.extract_pages(ExtractOptions([1, 2, 3])) # keep pages 1-3
merger.swap_pages(SwapOptions(1, 3)) # swap pages 1 and 3
merger.rotate(RotateOptions(RotateMode.ROTATE90, [2]))
merger.save("reordered.pdf")
from groupdocs.merger import Merger
from groupdocs.merger.domain.options import AddPasswordOptions
with Merger("document.pdf") as merger:
merger.add_password(AddPasswordOptions("secret"))
merger.save("protected.pdf")
from groupdocs.merger import Merger
from groupdocs.merger.domain.options import PreviewOptions, PreviewMode
def create_page_stream(page_number):
return open(f"page-{page_number}.png", "wb") # return a file/path stream
with Merger("document.pdf") as merger:
merger.generate_preview(PreviewOptions(create_page_stream, PreviewMode.PNG, [1, 2]))
import io
from groupdocs.merger import Merger
with open("document1.pdf", "rb") as src:
with Merger(src) as merger:
with open("document2.pdf", "rb") as tgt:
merger.join(tgt)
buffer = io.BytesIO()
merger.save(buffer) # BytesIO is updated after save
data = buffer.getvalue()
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{ "mcpServers": { "groupdocs-docs": { "url": "https://docs.groupdocs.com/mcp" } } }
https://docs.groupdocs.com/merger/python-net/llms-full.txt.md to any docs URLThe API works without a license in evaluation mode, with these limitations:
To remove these limitations, apply a license or request a temporary license:
from groupdocs.merger 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"
| Issue | Platform | Fix |
|---|---|---|
System.Drawing.Common is not supported | Linux/macOS | apt-get install libgdiplus (Linux) or brew install mono-libgdiplus (macOS) |
The type initializer for 'Gdip' threw an exception | macOS | brew install mono-libgdiplus |
| Garbled text / missing fonts in output | Linux | apt-get install ttf-mscorefonts-installer fontconfig && fc-cache -f |
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT errors | Linux | Do NOT set this variable. ICU must be available. |
IncorrectPasswordException / PasswordRequiredException | All | Open with Merger(path, LoadOptions(password="...")) |
Also available for other platforms: .NET | Java | Node.js
Product Page | Docs | Demos | API Reference | Blog | Free Support | Temporary License
GroupDocs.Merger GroupDocs.Total Python PyPi Document-Manipulation PDF-Merging Page-Reordering Document-Splitting Password-Protection
Self-contained Python wheel of GroupDocs.Merger 26.6 for Windows (x64). Compatible with Python 3.5-3.14. No external dependencies required. Merge, split, reorder and manipulate document pages.
Added: 2/6/2026
Downloads:
File Size: 141.73MB
Self-contained Python wheel of GroupDocs.Merger 26.6 for Linux (x64). Compatible with Python 3.5-3.14. Requires libgdiplus, libfontconfig1, and fonts (e.g. ttf-mscorefonts-installer). Merge, split, reorder and manipulate document pages.
Added: 2/6/2026
Downloads:
File Size: 141.53MB
Self-contained Python wheel of GroupDocs.Merger 26.6 for macOS arm64 (Apple Silicon). Compatible with Python 3.5-3.14. Requires mono-libgdiplus (brew install mono-libgdiplus). Merge, split, reorder and manipulate document pages.
Added: 2/6/2026
Downloads:
File Size: 140.73MB
Self-contained Python wheel of GroupDocs.Merger 26.6 for macOS amd64 (Intel). Compatible with Python 3.5-3.14. Requires mono-libgdiplus (brew install mono-libgdiplus). Merge, split, reorder and manipulate document pages.
Added: 2/6/2026
Downloads:
File Size: 142.85MB
This whl contains GroupDocs.Merger for Python via .NET version 25.3, built for Windows and targeting the AMD64 architecture.
Added: 5/3/2025
Downloads:
File Size: 130.98MB
This wheel contains GroupDocs.Merger version 25.3, compatible with Python 3 and optimized for Windows 32-bit systems.
Added: 5/3/2025
Downloads:
File Size: 126.91MB
This whl contains GroupDocs.Merger version 25.3, compatible with Python 3 and optimized for MacOS 64-bit systems.
Added: 5/3/2025
Downloads:
File Size: 135.48MB
This wheel contains GroupDocs.Merger version 25.3, compatible with Python 3 and optimized for Linux 64-bit systems.
Added: 5/3/2025
Downloads:
File Size: 134.83MB
This whl contains GroupDocs.Merger for Python via .NET version 24.10, built for Windows and targeting the AMD64 architecture.
Added: 2/10/2024
Downloads:
File Size: 126.74MB
This wheel contains GroupDocs.Merger version 24.10, compatible with Python 3 and optimized for Windows 32-bit systems.
Added: 2/10/2024
Downloads:
File Size: 122.87MB
This whl contains GroupDocs.Merger for Python via .NET version 24.7, built for Windows and targeting the AMD64 architecture.
Added: 20/9/2024
Downloads:
File Size: 126.74MB
This wheel contains GroupDocs.Merger version 24.7.0, compatible with Python 3 and optimized for Windows 32-bit systems.
Added: 20/9/2024
Downloads:
File Size: 122.87MB