GroupDocs.Editor for Python via .NET 26.5 Release Notes
This is the first public release of GroupDocs.Editor for Python via .NET, shipped as a self-contained Python wheel on PyPI. It brings the full document-editing capabilities of the underlying .NET library to Python: load a document, convert it to clean, editable HTML/CSS, edit that markup programmatically or in any WYSIWYG editor, then save it back to the original format — or convert it to another — with a single pip install and no MS Office, OpenOffice, or separate .NET runtime required.
Installation
pip install groupdocs-editor-net
Quick start
from groupdocs.editor import Editor, EditableDocument
from groupdocs.editor.formats import WordProcessingFormats
from groupdocs.editor.options import WordProcessingSaveOptions
with Editor("document.docx") as editor:
editable = editor.edit() # document -> editable HTML
html = editable.get_embedded_html()
edited = EditableDocument.from_markup(html.replace("Hello", "Goodbye"))
editor.save(edited, "document.docx", WordProcessingSaveOptions(WordProcessingFormats.DOCX))
Major Features
HTML Round-Trip Editing
Convert any supported document to editable HTML/CSS and save it back to its original format without losing fidelity — the core workflow behind GroupDocs.Editor. The HTML can be edited programmatically or in any third-party WYSIWYG editor such as CKEditor or TinyMCE.
Pythonic API Surface
The entire .NET API is exposed through Python-native naming. Classes use PascalCase, methods and properties use snake_case (auto-mapped to the underlying .NET PascalCase), and enum values use UPPER_SNAKE_CASE.
from groupdocs.editor.options import WordProcessingEditOptions
eo = WordProcessingEditOptions()
eo.enable_pagination = False
eo.enable_language_information = True
Multi-Format Support
One unified API across Word processing, spreadsheets, presentations, PDF, email, eBooks, and text/markup formats.
Format Conversion via HTML
There is no separate “convert” call — saving an EditableDocument with a different *SaveOptions converts it through the HTML intermediate. Same input, different output:
from groupdocs.editor.options import PdfSaveOptions, MarkdownSaveOptions
editor.save(editable, "out.pdf", PdfSaveOptions()) # DOCX -> PDF
editor.save(editable, "out.md", MarkdownSaveOptions()) # DOCX -> Markdown
Granular Editing
Edit a single worksheet of a workbook, a single slide of a deck, or a page range — and toggle pagination and language metadata:
from groupdocs.editor.options import SpreadsheetEditOptions
eo = SpreadsheetEditOptions()
eo.worksheet_index = 0 # 0-based
eo.exclude_hidden_worksheets = True
html = editor.edit(eo).get_content()
Resource Extraction
An EditableDocument exposes its extracted images, fonts, CSS, and audio as iterable collections, and can persist the HTML plus all resources into a folder:
editable = editor.edit()
print(len(editable.images), len(editable.css), len(editable.fonts))
editable.save("page.html", "page_resources")
Document Introspection
Read format, page count, size, and encryption status without a full edit pass:
info = editor.get_document_info()
print(info.format.name, info.page_count, info.size, info.is_encrypted)
Form Fields
Inspect and update Word-processing form fields through editor.form_field_manager.
Streams and Context Managers
Load from any binary stream and rely on the context-manager protocol for deterministic disposal of native document handles:
with open("document.docx", "rb") as stream:
with Editor(stream) as editor:
html = editor.edit().get_content()
AI Agent & LLM Friendly
AGENTS.mdbundled inside the installed wheel — Claude Code, Cursor, and GitHub Copilot auto-discover the API surface, usage patterns, and troubleshooting hints.- MCP server — point your AI tool at
https://docs.groupdocs.com/mcpfor on-demand documentation lookups. - Machine-readable docs at
https://docs.groupdocs.com/editor/python-net/llms-full.txtfor RAG and LLM context.
Supported Document Formats
| Category | Formats |
|---|---|
| Word Processing | DOC, DOCX, DOCM, DOT, DOTX, DOTM, ODT, OTT, RTF, WordML, FlatOPC |
| Spreadsheets | XLS, XLT, XLSX, XLSM, XLSB, XLTX, XLTM, XLAM, SpreadsheetML, ODS, FODS, SXC, DIF, CSV, TSV |
| Presentations | PPT, PPTX, PPTM, PPS, PPSX, PPSM, POT, POTX, POTM, ODP, OTP |
| Fixed-Layout | PDF, XPS |
| EML, EMLX, MSG, MBOX, MHT/MHTML, PST, OST, OFT, TNEF, ICS, VCF | |
| eBooks | EPUB, MOBI, AZW3 |
| Text & Markup | HTML, MHTML, CHM, XML, JSON, Markdown (MD), TXT |
Public API Surface
Classes
Editor— entry point; open by path or stream,edit(),save(),get_document_info(),form_field_managerEditableDocument— HTML/CSS representation;get_content(),get_body_content(),get_embedded_html(),get_css_content(),save(), resource collections (images,fonts,css,audio,all_resources), and thefrom_markup()/from_markup_and_resource_folder()/from_file()factoriesFormFieldManager— read and update Word-processing form fieldsLicense,Metered— licensing APIs
Options
- Load:
WordProcessingLoadOptions,SpreadsheetLoadOptions,PresentationLoadOptions,PdfLoadOptions - Edit:
WordProcessingEditOptions,SpreadsheetEditOptions,PresentationEditOptions,PdfEditOptions,EbookEditOptions,EmailEditOptions,MarkdownEditOptions,TextEditOptions,XmlEditOptions,DelimitedTextEditOptions - Save:
WordProcessingSaveOptions,SpreadsheetSaveOptions,PresentationSaveOptions,PdfSaveOptions,HtmlSaveOptions,MhtmlSaveOptions,MarkdownSaveOptions,XpsSaveOptions,TextSaveOptions,EbookSaveOptions,EmailSaveOptions,DelimitedTextSaveOptions
Enums
WordProcessingFormats,SpreadsheetFormats,PresentationFormats,FixedLayoutFormats,EBookFormats,EmailFormats,TextualFormats,FontExtractionOptions,FontEmbeddingOptions
Exceptions
PasswordRequiredException,IncorrectPasswordException,EncryptedException,InvalidFormatException
Evaluation Mode
The API works without a license in evaluation mode, with these limitations:
- PDF output carries an evaluation watermark; other formats show an equivalent evaluation mark.
- A page/document-count cap applies to processed documents.
To remove these limitations, apply a license or request a temporary license:
from groupdocs.editor 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"
System Requirements
- Python: 3.5 – 3.14
- Platforms: Windows x64/x86, Linux x64, macOS x64/ARM64
- No external software (MS Office / OpenOffice) required. On Linux/macOS, install the native GDI+/font libraries listed in Troubleshooting.
Troubleshooting
| 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. Install ICU: apt-get install libicu-dev |
TypeLoadException | Any | Reinstall: pip install --force-reinstall groupdocs-editor-net |
License
See detailed legal information, including terms of use, copyright, EULA, and privacy policy: https://about.groupdocs.com/legal/
Support
For questions or technical assistance, please use our Free Support Forum.