GroupDocs.Annotation for Python via .NET 26.6 Release Notes

GroupDocs.Annotation for Python via .NET 26.6 brings the full annotation capabilities of the underlying .NET library to Python, shipped as a self-contained wheel on PyPI. Add annotations, markups, and comments to documents and images — highlight, underline, strike out, or replace text; draw area, ellipse, point, arrow, distance, and polyline shapes; add watermarks, text fields, hyperlinks, and image stamps; thread replies; and get or remove annotations — all on-premise, with no MS Office, OpenOffice, or separate .NET runtime required.

Full List of Changes in This Release

KeyCategorySummary
ANNOTATIONPYTHONNET-1New FeatureInitial release of GroupDocs.Annotation for Python via .NET — self-contained wheels for Windows, Linux, and macOS, exposing the full annotation API through a Pythonic, AI-friendly surface.

This is the first release of the Python-via-.NET wrapper for GroupDocs.Annotation. The complete, runnable examples are available in the GroupDocs.Annotation for Python via .NET repository and throughout the documentation.

Installation

pip install groupdocs-annotation-net

Quick start

from groupdocs.annotation import Annotator
from groupdocs.annotation.models import Rectangle
from groupdocs.annotation.models.annotation_models import AreaAnnotation
from groupdocs.pydrawing import Color

with Annotator("document.pdf") as annotator:
    area = AreaAnnotation()
    area.box = Rectangle(100, 100, 100, 100)
    area.background_color = Color.yellow.to_argb()   # colors are ARGB integers
    area.page_number = 0                             # page_number is 0-based
    annotator.add(area)
    annotator.save("annotated.pdf")

Major Features

Graphic annotations

Draw area, ellipse, point, arrow, distance, and polyline shapes, positioned by a Rectangle box. Colors are packed ARGB integers (use groupdocs.pydrawing.Color.<name>.to_argb()).

from groupdocs.annotation.models.annotation_models import AreaAnnotation, EllipseAnnotation
from groupdocs.annotation.models import Rectangle
from groupdocs.pydrawing import Color

area = AreaAnnotation()
area.box = Rectangle(100, 100, 200, 80)
area.background_color = Color.yellow.to_argb()
area.page_number = 0

ellipse = EllipseAnnotation()
ellipse.box = Rectangle(100, 250, 150, 80)
ellipse.page_number = 0

with Annotator("document.pdf") as annotator:
    annotator.add([area, ellipse])
    annotator.save("annotated.pdf")

Text markup

Highlight, underline, strike out, squiggly-underline, redact, or replace text. Text-markup annotations are positioned by the corner Points of the target text region.

from groupdocs.annotation.models.annotation_models import HighlightAnnotation
from groupdocs.annotation.models import Point
from groupdocs.pydrawing import Color

highlight = HighlightAnnotation()
highlight.points = [Point(80, 600), Point(300, 600), Point(80, 575), Point(300, 575)]
highlight.background_color = Color.yellow.to_argb()
highlight.page_number = 0

Add a WatermarkAnnotation (text, angle, alignment), a TextFieldAnnotation, a LinkAnnotation (with a URL), or an ImageAnnotation (stamp an image at a box).

Comments and replies

Attach an author (User) and a threaded discussion (Reply list) to any annotation.

from groupdocs.annotation.models import Reply, User, Role

reply = Reply()
reply.comment = "Please review"
reply.user = User(name="Tom", role=Role.EDITOR)
area.replies = [reply]

Manage annotations

Read annotations with annotator.get(), filter by AnnotationType, and remove by id, instance, or list:

with Annotator("annotated.pdf") as annotator:
    annotations = annotator.get()
    annotator.remove(annotation_id=annotations[0].id)
    annotator.save("output.pdf")

Pythonic, AI-friendly API

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. The wheel bundles an AGENTS.md reference (discovered at groupdocs/annotation/AGENTS.md) for AI coding assistants such as Claude Code, Cursor, and GitHub Copilot, and the documentation is available in an LLM-optimized form and via the GroupDocs MCP server.

Supported Document Formats

CategoryFormats
Word ProcessingDOC, DOCX, DOCM, DOT, DOTX, DOTM, RTF, ODT
SpreadsheetsXLS, XLSX, XLSM, XLSB, ODS
PresentationsPPT, PPTX, PPS, PPSX, ODP
Fixed-LayoutPDF
ImagesTIF, TIFF, JPG, JPEG, PNG, BMP
CADDWG, DXF
DiagramVSD, VSDX, VSDM, VSS, VSX, VSSX, VST, VSTM
EmailEML, EMLX
WebHTM, HTML

See the full list on the supported document formats page.

Public API Surface

Classes

  • Annotator — entry point; open by path or stream, add(), update(), get(), remove(), save(), .document
  • Documentget_document_info(), generate_preview(), add_image_to_document()
  • FileType, IDocumentInfo — format and document metadata
  • License, Metered — licensing APIs
  • AnnotatorSettings — logger and cache configuration

Annotation models (groupdocs.annotation.models.annotation_models)

AreaAnnotation, ArrowAnnotation, DistanceAnnotation, EllipseAnnotation, HighlightAnnotation, ImageAnnotation, LinkAnnotation, PointAnnotation, PolylineAnnotation, ReplacementAnnotation, ResourcesRedactionAnnotation, SquigglyAnnotation, StrikeoutAnnotation, TextFieldAnnotation, TextRedactionAnnotation, UnderlineAnnotation, WatermarkAnnotation

Support models & options

  • Rectangle, Point, User, Role, Reply (groupdocs.annotation.models)
  • AnnotationType, LoadOptions, SaveOptions, PreviewOptions, PreviewFormats (groupdocs.annotation.options)

Exceptions

GroupDocsAnnotationException, AnnotatorException, CorruptedOrDamagedFileException, and related types in groupdocs.annotation.exceptions.

Platform Wheels

The release ships as pre-built, self-contained wheels for the following platforms (no separate .NET runtime required):

PlatformWheel
Windows x64groupdocs_annotation_net-26.6.0-py3-none-win_amd64.whl
Linux x64groupdocs_annotation_net-26.6.0-py3-none-manylinux1_x86_64.whl
macOS x64groupdocs_annotation_net-26.6.0-py3-none-macosx_10_14_x86_64.whl
macOS ARM64groupdocs_annotation_net-26.6.0-py3-none-macosx_11_0_arm64.whl

System Requirements

  • Python: 3.5 – 3.14
  • Platforms: Windows x64, Linux x64, macOS x64/ARM64
  • No external software (MS Office / OpenOffice) required. On Linux install libgdiplus, libfontconfig1, and libicu-dev; on macOS install mono-libgdiplus via Homebrew.

Evaluation Mode

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

  • Evaluation badges/watermarks are placed on the output document.

There is no per-process document-open limit in evaluation mode. To remove the evaluation watermark, apply a license or request a free 30-day temporary license:

from groupdocs.annotation import License

License().set_license(license_path="path/to/license.lic")

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

export GROUPDOCS_LIC_PATH="path/to/license.lic"
Public API changes

Initial Python-via-.NET release. This wrapper tracks the underlying GroupDocs.Annotation engine.

Explore our resources