Skip to main content

A Pandoc filter that converts Mermaid code blocks to images using Selenium

Project description

pandoc-mermaid-selenium-filter

PyPI - Version PyPI - Downloads GitHub License GitHub Actions Workflow Status Coverage Status

Provides a feature available as a filter for the widely known universal document conversion tool Pandoc, which converts code blocks written in Mermaid syntax within Markdown documents into images.

Supports Architecture Diagrams introduced in Mermaid v11.1.0. Additionally, icon sets from iconify.design, including SVG Logos and Material Design Icons, are available for use.

The conversion process follows these steps:

  1. Detect code blocks with the mermaid class specified
  2. Convert the detected Mermaid syntax code to PNG images using Selenium
  3. Save the generated images in the mermaid-images directory and replace the original code blocks with image references

Although many similar filters with the same functionality are already available, most of them rely on packages using Puppeteer as the image conversion engine. These packages often face dependency issues or have challenges related to complex setup and configuration. This package adopts Selenium, which has a longer history than Puppeteer.

[!NOTE]

  • Chrome WebDriver will be downloaded on first execution
  • A headless Chrome browser is temporarily used for image generation

Usage

  1. First, install the filter.

    pip install pandoc-mermaid-selenium-filter
    
  2. When using Mermaid syntax in your Markdown file, use a code block with the mermaid class specified as follows:

    # Testing Mermaid Filter
    
    Here's a simple flowchart example:
    
    ```mermaid
    graph TD
        A[Start] --> B{Condition}
        B -->|Yes| C[Process 1]
        B -->|No| D[Process 2]
        C --> E[End]
        D --> E
    ```
    
  3. You can convert Markdown to HTML/PDF using the following commands:

    # HTML
    pandoc example/example.md \
       --filter pandoc-mermaid-selenium-filter \
       -o example/output.html
    
    # PDF
    pandoc example/example.md \
       --filter pandoc-mermaid-selenium-filter \
       -o example/output.pdf
    

[!NOTE]

For generating PDFs with Japanese text, add the following options. Note that you need to install collection-langjapanese beforehand to add Japanese support to Pandoc.

pandoc example/example.md \
   --filter pandoc-mermaid-selenium-filter \
   -o example/output.pdf \
   --pdf-engine lualatex \
   -V documentclass=ltjarticle \
   -V luatexjapresetoptions=fonts-noto-cjk

Architecture Diagrams

In the context of mermaid-js, the architecture diagram is used to show the relationship between services and resources commonly found within the Cloud or CI/CD deployments. In an architecture diagram, services (nodes) are connected by edges. Related services can be placed within groups to better illustrate how they are organized.

The example code as follows:

```mermaid
architecture-beta
    group api(cloud)[API]

    service db(database)[Database] in api
    service disk1(disk)[Storage] in api
    service disk2(disk)[Storage] in api
    service server(server)[Server] in api

    db:L -- R:server
    disk1:T -- B:server
    disk2:T -- B:db
```

Icons

By default, architecture diagram supports the following icons: cloud, database, disk, internet, server. This package provides access to the SVG Logos and Material Design Icons icon sets offered by iconify.design. They can be used in the architecture diagram by using the format logos:icon-name or mdi:icon-name.

The example code will change as follows:

```mermaid
architecture-beta
    group api(logos:aws-lambda)[API]

    service db(logos:aws-aurora)[Database] in api
    service disk1(logos:aws-glacier)[Storage] in api
    service disk2(logos:aws-s3)[Storage] in api
    service server(logos:aws-ec2)[Server] in api

    db:L -- R:server
    disk1:T -- B:server
    disk2:T -- B:db
```

Developer Information

Development Environment Setup

You can install all development dependencies with the following command:

uv sync --extra dev

Build

You can build this package using the following command. During the build process, the custom hooks will download the latest source code for Mermaid, as well as the SVG Logos and Material Design Icons icon sets, from jsDelivr.

uv build

Testing

You can run tests with the following command:

uv run pytest

License

This library is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pandoc_mermaid_selenium_filter-1.0.1.tar.gz (4.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file pandoc_mermaid_selenium_filter-1.0.1.tar.gz.

File metadata

File hashes

Hashes for pandoc_mermaid_selenium_filter-1.0.1.tar.gz
Algorithm Hash digest
SHA256 7c5947c2b1dace5c85e1d2cd95f704223514f7bcfe115501315f3f2c63f88c4f
MD5 d2f3b30859503b45075a93f5312aca74
BLAKE2b-256 b09ea68ee97cd0f8342012929e73a84cd4b5b0c6ea7ba32f54259bac51337346

See more details on using hashes here.

File details

Details for the file pandoc_mermaid_selenium_filter-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pandoc_mermaid_selenium_filter-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1423491d364de75ce33f136f425241260e7d28ae5db7739a279c5bce7b125fef
MD5 5828ce882b480f5f3901e70fcce4511d
BLAKE2b-256 a85c1e90475f08fb0305fe8a3ee155a240832867c197f2b39128d942ae1ddc5e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page