jupyterlab_export_markdown_extension
v1.6.28
Published
Jupyterlab extension to export markdown file as pdf, docx and html (with embedded images)
Maintainers
Readme
jupyterlab_export_markdown_extension
[!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
- 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
- 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-emojiMermaid 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 positions in the document, and message the remedy in full - a caller needs nothing beyond the header. It is absent when everything rendered, and is listed in Access-Control-Expose-Headers so a cross-origin caller can read it.
Install
pip install jupyterlab_export_markdown_extensionThat'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
- Open a markdown file in JupyterLab
- Use File -> Export Markdown As submenu, or
- Open command palette (Ctrl+Shift+C) and search "Export Markdown"
Export Formats
| Format | Library | Notes | | ------ | ---------------------- | ---------------------------------------------------------------- | | PDF | reportlab | Unicode support, compact styling, math as PNG images | | DOCX | python-docx + htmldocx | Native OMML math, smart image sizing, banded tables, alert boxes | | HTML | markdown + KaTeX | Standalone 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_extensionContributing
If you would like to contribute to this extension, please refer to the Contributing Guide.
License
BSD 3-Clause License
