[DEPRECATED - use jupyterlab_export_svg_as_png_extension] Jupyterlab extension for markdown files with Mermaid diagrams to allow copying of mermaid diagrams as PNG images
Project description
JupyterLab Mermaid to PNG Extension
[!WARNING] This extension has been superseded by jupyterlab_export_svg_as_png_extension.
The new extension handles Mermaid diagrams and any other SVG content in JupyterLab (SVG cell outputs, markdown, HTML rendered content) with a single unified context menu. It also adds theme-aware rendering that resolves
@media (prefers-color-scheme)CSS based on the active JupyterLab theme.To migrate:
pip uninstall jupyterlab_mmd_to_png_extension && pip install jupyterlab_export_svg_as_png_extensionThis repository is kept for historical reference. No new features will be added here.
[!TIP] This extension is part of the stellars_jupyterlab_extensions metapackage. Install all Stellars extensions at once:
pip install stellars_jupyterlab_extensions
Export Mermaid diagrams from JupyterLab markdown files as high-quality PNG images. Right-click any rendered diagram in the markdown viewer to copy or save it as a PNG file with configurable resolution settings.
Features
Core capabilities:
- Copy diagrams directly to clipboard as PNG images
- Save diagrams as PNG files with deterministic content-based filenames
- Configurable DPI resolution from 72 to 1200 (default 300)
- Transparent backgrounds for seamless integration into documents
- Zero configuration required - works immediately after installation
Technical implementation:
- Pure client-side rendering using browser canvas API
- No external services or command-line tools required
- Calibrated DPI conversion matching Adobe converter output (±0.07% accuracy)
- Context menu integration in markdown viewer only
Requirements
- JupyterLab >= 4.0.0
Installation
Install from PyPI using pip:
pip install jupyterlab_mmd_to_png_extension
After installation, restart JupyterLab to activate the extension.
Usage
Open any markdown file containing Mermaid diagrams in JupyterLab. The extension adds two options to the context menu when you right-click on a rendered diagram in the markdown viewer:
Copy as PNG - Copies the diagram to your clipboard as a PNG image. Paste directly into documents, presentations, or image editors.
Save as PNG - Downloads the diagram as a PNG file. Filenames follow the pattern mermaid-<document-name>-<content-hash>.png where the hash is generated from the diagram content, ensuring consistent filenames for identical diagrams.
DPI Configuration
Adjust export resolution through JupyterLab's settings interface. Navigate to Settings -> Advanced Settings Editor -> Mermaid to PNG Extension. The default DPI is 300 (standard print quality), with a range from 72 (screen resolution) to 1200 (professional print quality).
Example
Create a markdown file with a Mermaid diagram:
```mermaid
graph TD
A[Start] -> B[Process]
B -> C[End]
Render the markdown file in JupyterLab's viewer. Right-click the diagram and select either "Copy as PNG" or "Save as PNG". The exported image will use your configured DPI setting and include a transparent background.
## Uninstall
Remove the extension using pip:
```bash
pip uninstall jupyterlab_mmd_to_png_extension
Troubleshooting
If the extension is not appearing in the context menu, verify both the server and frontend extensions are properly installed and enabled.
Check server extension status:
jupyter server extension list
Check frontend extension status:
jupyter labextension list
Both should show jupyterlab_mmd_to_png_extension as enabled. If either is missing or disabled, reinstall the extension and restart JupyterLab.
Contributing
Development Setup
Install the extension in development mode. This requires NodeJS for building the TypeScript source code. The jlpm command is JupyterLab's pinned version of yarn.
# Install package in development mode
pip install -e ".[test]"
# Link development version with JupyterLab
jupyter labextension develop . --overwrite
# Enable server extension manually (required in development mode)
jupyter server extension enable jupyterlab_mmd_to_png_extension
# Build the extension
jlpm build
Development Workflow
Run the watch command in one terminal to automatically rebuild on file changes:
jlpm watch
Run JupyterLab in a separate terminal:
jupyter lab
The extension rebuilds automatically when you save changes. Refresh your browser to load the updated extension (allow a few seconds for rebuild completion).
Development Uninstall
Disable the server extension and remove the package:
jupyter server extension disable jupyterlab_mmd_to_png_extension
pip uninstall jupyterlab_mmd_to_png_extension
Remove the symlink created by jupyter labextension develop. Use jupyter labextension list to locate the labextensions folder, then delete the jupyterlab_mmd_to_png_extension symlink within that folder.
Testing
Python tests use Pytest:
pip install -e ".[test]"
pytest -vv -r ap --cov jupyterlab_mmd_to_png_extension
JavaScript tests use Jest:
jlpm
jlpm test
Integration tests use Playwright with the Galata framework for JupyterLab UI testing. See ui-tests/README.md for details.
Release Process
See RELEASE.md for packaging and publishing instructions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jupyterlab_mmd_to_png_extension-1.0.11.tar.gz.
File metadata
- Download URL: jupyterlab_mmd_to_png_extension-1.0.11.tar.gz
- Upload date:
- Size: 443.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83b9ba37bb9d78aeb79921e85071dfc96f271a7160b3ee12ecf72fa7221a462f
|
|
| MD5 |
0cb99b7619bf40551fa4aeb9b5a7e7cf
|
|
| BLAKE2b-256 |
4b5878b7ae2cdddf011982ca6ee47a1cbaf943071d8e0fa67455015ddb4f39db
|
File details
Details for the file jupyterlab_mmd_to_png_extension-1.0.11-py3-none-any.whl.
File metadata
- Download URL: jupyterlab_mmd_to_png_extension-1.0.11-py3-none-any.whl
- Upload date:
- Size: 25.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f482ed4d9faee52f4d111de525bc24adf58e6a04efb5728187dda2782413fca5
|
|
| MD5 |
50c1e6194361a538f5db1d98d41f77fb
|
|
| BLAKE2b-256 |
b672b75d5c3a8c8a9ba96e364f831533ee78c3858de0f078138224b251a75032
|