Skip to content
Conduit

skill

jupyterlab-export-markdown-extension

Jupyterlab extension to allow export of Markdown files to PDF, DOCX and HTML formats

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/stellarshenson/jupyterlab_export_markdown_extension itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 22, 2026

jupyterlab_export_markdown_extension

GitHub Actions npm version PyPI version Total PyPI downloads JupyterLab 4 Brought To You By KOLOMOLO

[!TIP] This extension is part of the stellars_jupyterlab_extensions metapackage. Install all Stellars extensions at once: pip install stellars_jupyterlab_extensions

Export markdown files to PDF, DOCX, and HTML directly from JupyterLab. No external dependencies required - just pip install and go.

Features

  • PDF Export - Full Unicode and emoji support via reportlab
  • DOCX Export - Microsoft Word documents with smart image sizing (fit-to-page for large images)
  • HTML Export - Standalone files with embedded images
  • LaTeX Math - Native OMML equations in DOCX (editable in Word), KaTeX in HTML, PNG images in PDF
  • GitHub Alerts - Colored alert boxes for [!NOTE], [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION] with left border and background shading in DOCX/PDF
  • Mermaid Diagrams - Rendered server-side to PNG via Playwright Chromium at the configured SVG export width
  • Embedded Images - Local images automatically converted to base64
  • Syntax Highlighting - Code blocks with Pygments-powered coloring
  • Wide Tables - Tables wider than the page wrap within a fitted column layout instead of running past the margin, in PDF, DOCX and HTML
  • Merged Cells - colspan and rowspan on raw HTML table cells merge in DOCX and PDF
  • Task Lists - - [x] / - [ ] render as checkbox glyphs in HTML, DOCX and PDF
  • Lists and Callouts - two-space nested lists render as lists, every ordered list restarts at 1, and a bordered <div> draws as a box - a uniform border as a frame in its own line style, an accented one with its bar - in DOCX and PDF
  • Inline HTML - <span style="color:...">, font-weight, font-style, text-decoration, <mark>, <del>, <ins>, <kbd>, <font color>, align= and <div> render as written in DOCX and PDF
  • Symbol Glyphs - ★ ☆ ✓ ✗ ☐ ☒, arrows and box drawing name a font of their own in DOCX, so they look the same in every reader's Word
  • Export Spinner - Modal dialog shows progress during export operations
  • File Menu Integration - "Export Markdown As" submenu appears when markdown is active
  • Command Palette - All export commands available via Ctrl+Shift+C
  • Command Line - jupyterlab-export-markdown-extension convert exports a file to PDF, DOCX and HTML without JupyterLab running
  • Settings - Configure export font size, SVG export width, math export width, themes, and alert label visibility via Settings Editor
  • Pure Python - No pandoc, no LaTeX, no system dependencies

Requirements

  • JupyterLab >= 4.0.0
  • Python >= 3.10

For PDF export, install required system libraries and emoji font:

# Ubuntu/Debian
sudo apt-get install libcairo2 libpango-1.0-0 libpangoft2-1.0-0 fonts-noto-color-emoji

Mermaid diagrams are rendered client-side using JupyterLab's built-in Mermaid support - no additional installation required. An export driven through the REST endpoints instead of the UI has no browser to render them, so the server renders those diagrams itself with a bundled copy of Mermaid, in the same Playwright Chromium the SVG rasterizer uses - no network access involved.

A diagram that cannot be rendered never fails the export: its source is kept and the response carries an X-Export-Warnings header describing what happened, as a JSON array of {code, count, diagrams, message}. code is one of chromium-unavailable, bundle-missing, syntax-error, layout-unsupported, render-timeout, skipped, budget-exhausted, rasterize-failed or render-failed; count is how many diagrams the warning covers, diagrams a bounded prefix of their zero-based positions in the document, and message the remedy in full - a caller needs nothing beyond the header. An image that is not embedded - its file does not exist or is outside the server root, or its download failed - is reported under the code image-not-embedded, with images, the first 3 of its paths as written, in place of diagrams; HTML keeps such an image's path, DOCX and PDF show a text placeholder. The header is absent when every diagram rendered and every image was embedded, and is listed in Access-Control-Expose-Headers so a cross-origin caller can read it.

Install

pip install jupyterlab_export_markdown_extension

That's it. No really, that's actually it. We spent considerable effort making sure you don't have to install pandoc, LaTeX, or sacrifice a goat to get this working.

Usage

  1. Open a markdown file in JupyterLab
  2. Use File -> Export Markdown As submenu, or
  3. Open command palette (Ctrl+Shift+C) and search "Export Markdown"

Command Line

The package installs jupyterlab-export-markdown-extension, which converts a file without JupyterLab running. convert starts a private Jupyter server inside the command and calls the same export endpoints as the menu, so the result matches a UI export made with default settings; the one difference is that Mermaid diagrams render in the server's bundled Mermaid instead of the browser's.

jupyterlab-export-markdown-extension convert report.md --to pdf docx html
jupyterlab-export-markdown-extension check     # test that Chromium launches
jupyterlab-export-markdown-extension install   # download Chromium and its system libraries
  • Each document is written beside the source, or to -o PATH when there is one format; an existing file is overwritten
  • Images are read only from inside --root (default: the current directory) - pass a folder that holds the file and every image it links to, such as the repository root; an image that is not embedded is named in a warning on stderr
  • Your own Jupyter configuration is not read, so a contents root or log level set there does not change the export
  • --theme, --font-size and --alert-labels set what the settings below set in the UI
  • jupyterlab-export-markdown-extension --help lists the commands, the exit codes and examples; <command> --help documents that command's flags and output

An agent skill for AI coding assistants is in .agents/skills/jupyterlab-export-markdown-extension. pip install also copies it to <sys.prefix>/share/jupyter/agents/skills/jupyterlab-export-markdown-extension, a folder no agent reads. Link it from there, with the Python that runs JupyterLab:

mkdir -p ~/.agents/skills && ln -s "$(python -c 'import sys; print(sys.prefix)')/share/jupyter/agents/skills/jupyterlab-export-markdown-extension" ~/.agents/skills/jupyterlab-export-markdown-extension

From a clone, link it into Claude Code:

ln -s "$PWD/.agents/skills/jupyterlab-export-markdown-extension" ~/.claude/skills/jupyterlab-export-markdown-extension

Export Formats

FormatLibraryNotes
PDFreportlabUnicode support, compact styling, math as PNG images
DOCXpython-docx + htmldocxNative OMML math, smart image sizing, banded tables, alert boxes
HTMLmarkdown + KaTeXStandalone with embedded images, client-side math rendering

Settings

Configure the extension via Settings -> Settings Editor -> Markdown Export Extension:

  • Export Font Size - Base body text size for all three formats: small (10pt), medium (12pt, default), large (13pt). Every other size - headings, tables, code, captions - is a fixed proportion of it, so the whole document scales together
  • SVG Export Pixel Width - Target pixel width for SVG images and Mermaid diagrams rasterized server-side in DOCX/PDF (default: 1920, range: 400-4096). Height follows the source aspect ratio
  • Math Export Pixel Width (PDF only) - Target pixel width for math expression images in PDF export (default: 800, range: 200-3000). DOCX uses native OMML equations and HTML uses KaTeX, neither affected by this setting
  • Show Alert Labels - Display alert type labels (NOTE, TIP, etc.) in exported documents (default: off)

Uninstall

pip uninstall jupyterlab_export_markdown_extension

Contributing

If you would like to contribute to this extension, please refer to the Contributing Guide.

License

BSD 3-Clause License

↑↓ navigate openesc close