We’re happy to announce the release of GroupDocs.Viewer for Python 26.9, available as of September 2026. This release upgrades the underlying GroupDocs.Viewer engine from 26.4 to 26.8, adds support for rendering Microsoft Project files on Linux and macOS, introduces page numbering and resolution controls for Word documents, removes the libgdiplus dependency on non-Windows platforms, and restores compatibility with Python 3.5–3.7. The embedded .NET runtime is updated to 10.0.12, and the Python API now includes full docstrings with code examples.

What’s new in this release

  • [Feature] Add WordProcessingOptions.page_number_location and the WordsPageNumberLocation enum to stamp page numbers on rendered Word documents (VIEWERPYTHON-153)
  • [Feature] Add WordProcessingOptions.horizontal_resolution / vertical_resolution to set the DPI of PNG and JPEG output for Word documents (VIEWERPYTHON-154)
  • [Feature] Add support for rendering Microsoft Project files (MPP, MPT, MPX) on Linux and macOS (VIEWERPYTHON-155)
  • [Enhancement] Update GroupDocs.Viewer engine from 26.4 to 26.8 (VIEWERPYTHON-156)
  • [Enhancement] Update the embedded .NET runtime from 10.0.0 to 10.0.12 (VIEWERPYTHON-157)
  • [Enhancement] Remove the libgdiplus / mono-libgdiplus requirement on Linux and macOS (VIEWERPYTHON-158)
  • [Enhancement] Ship the same Python API on every platform — the Linux and macOS packages gain ProjectManagementOptions and the Project, Photoshop, Illustrator and OneNote FileType members (VIEWERPYTHON-159)
  • [Enhancement] Add docstrings with summaries, parameters and code examples to the Python API (VIEWERPYTHON-160)
  • [Enhancement] Add a Developer Guide section to the API reference (VIEWERPYTHON-161)
  • [Fix] Cannot use the package on Python 3.5 – 3.7 (VIEWERPYTHON-162)
  • [Fix] pip installs the package on Linux and macOS versions that cannot run it (VIEWERPYTHON-163)

Public API changes

Nothing is removed or renamed.

New types

Type Module Description
WordsPageNumberLocation groupdocs.viewer.options Where to stamp page numbers on a rendered Word document: NOT_APPLY (default), TOP_LEFT, TOP_CENTER, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT

New members on existing classes

Class Member Description
WordProcessingOptions page_number_location Page numbering to apply while rendering (WordsPageNumberLocation)
WordProcessingOptions horizontal_resolution Horizontal DPI of PNG / JPEG output, 72 – 600 (default 96)
WordProcessingOptions vertical_resolution Vertical DPI of PNG / JPEG output, 72 – 600 (default 96)

New on Linux and macOS

ProjectManagementOptions, BaseViewOptions.project_management_options and FileType.MPP, MPT, MPX, PSD, PSB, AI, ONE were already available on Windows and are now in the Linux and macOS packages as well — see One Python API on every platform.

New features

Microsoft Project files on Linux and macOS

MPP, MPT and MPX files used to render on Windows only; on Linux and macOS they failed with Failed to detect file type. The 26.8 engine renders them on every platform, with the same ProjectManagementOptions as on Windows:

from groupdocs.viewer import Viewer
from groupdocs.viewer.options import HtmlViewOptions, TimeUnit

with Viewer("project.mpp") as viewer:
    options = HtmlViewOptions.for_embedded_resources("page_{0}.html")
    options.project_management_options.time_unit = TimeUnit.DAYS
    viewer.view(options)

On Linux, install the Microsoft core fonts (ttf-mscorefonts-installer) first: without them Project rendering fails with Cannot find fallback font 'Generic Sans Serif', and metric-compatible substitutes such as Liberation do not satisfy that lookup.

Page numbers on rendered Word documents

WordProcessingOptions.page_number_location stamps page numbers on a Word document as it renders, even if the document has none. Choose one of six positions from the new WordsPageNumberLocation enum; the default, NOT_APPLY, leaves the document as it is.

from groupdocs.viewer import Viewer
from groupdocs.viewer.options import PdfViewOptions, WordsPageNumberLocation

with Viewer("document.docx") as viewer:
    options = PdfViewOptions("output.pdf")
    options.word_processing_options.page_number_location = WordsPageNumberLocation.BOTTOM_CENTER
    viewer.view(options)

Resolution of PNG and JPEG output for Word documents

WordProcessingOptions.horizontal_resolution and vertical_resolution set the DPI of images rendered from Word documents. The default is 96 DPI; values outside 72 – 600 DPI are clamped to that range.

from groupdocs.viewer import Viewer
from groupdocs.viewer.options import PngViewOptions

with Viewer("document.docx") as viewer:
    options = PngViewOptions("page_{0}.png")
    options.word_processing_options.horizontal_resolution = 300
    options.word_processing_options.vertical_resolution = 300
    viewer.view(options)

No more libgdiplus

The Linux and macOS packages render through SkiaSharp and Aspose.Drawing, which ship inside the wheel. They never call libgdiplus: every documented example passes in a Linux container that has neither libgdiplus nor its graphics dependencies. Drop libgdiplus / mono-libgdiplus from your images and provisioning scripts.

One Python API on every platform

Earlier Linux and macOS packages exposed a smaller API than the Windows one. 26.9 ships the same API everywhere, so code written against the documentation imports on every platform. The Linux and macOS packages gain ProjectManagementOptions and the FileType.MPP, MPT and MPX members, which now work there too.

They also gain FileType.PSD, PSB, AI and ONE. Those formats remain Windows-only, and on Linux and macOS accessing one of these members raises GroupDocsViewerException: Member 'GroupDocs.Viewer.FileType.PSD' not found. To decide at runtime whether a format can render, check FileType.get_supported_file_types(), which lists only what the running engine renders:

from groupdocs.viewer import FileType

supported = {file_type.extension for file_type in FileType.get_supported_file_types()}
print(".psd" in supported)   # True on Windows, False on Linux and macOS
print(".mpp" in supported)   # True everywhere

Code example

To render a Microsoft Project file on Linux or macOS with daily time units:

from groupdocs.viewer import Viewer
from groupdocs.viewer.options import HtmlViewOptions, TimeUnit

with Viewer("project.mpp") as viewer:
    options = HtmlViewOptions.for_embedded_resources("page_{0}.html")
    options.project_management_options.time_unit = TimeUnit.DAYS
    viewer.view(options)

To apply page numbering to a Word document and render to PDF:

from groupdocs.viewer import Viewer
from groupdocs.viewer.options import PdfViewOptions, WordsPageNumberLocation

with Viewer("document.docx") as viewer:
    options = PdfViewOptions("output.pdf")
    options.word_processing_options.page_number_location = WordsPageNumberLocation.BOTTOM_CENTER
    viewer.view(options)

How to get the update

PyPI

Upgrade to the latest package via PyPI:

pip install groupdocs-viewer-net==26.9.0

Direct download

Download wheel files for all platforms from the GroupDocs.Viewer for Python via .NET 26.9 page.

Resources