Skip to main content

MkDocs plugin to convert SVG files to PNG images during build

Project description

mkdocs-svg-to-png

PyPI - Python Version

An MkDocs plugin to convert SVG files to PNG images.

This plugin finds SVG code blocks and image references and converts them to PNG images during the MkDocs build process. This is useful for formats that don't support SVG directly, like PDF, or for ensuring consistent image rendering across different environments.

Requirements

This plugin requires CairoSVG and its dependencies. Please ensure you have them installed:

pip install cairosvg

CairoSVG itself has some system-level dependencies (like cairo, pango, gdk-pixbuf). On Debian/Ubuntu, you can install them using:

sudo apt-get update
sudo apt-get install libcairo2-dev libffi-dev libgdk-pixbuf2.0-dev libpango1.0-dev

For other operating systems, please refer to the CairoSVG documentation.

Setup

Install the plugin using pip:

pip install mkdocs-svg-to-png

Activate the plugin in mkdocs.yml:

plugins:
  - search
  - svg-to-png

Note: If you have no plugins entry in your config file yet, you'll likely also want to add the search plugin. MkDocs enables it by default if there is no plugins entry set, but now you have to enable it explicitly.

Options

You can customize the plugin's behavior in mkdocs.yml:

plugins:
  - svg-to-png:
      output_dir: "assets/images"
      image_format: "png"
      dpi: 300
      quality: 95
      background_color: "transparent"
      cache_enabled: true
      cache_dir: ".svg_cache"
      preserve_original: false
      error_on_fail: false
      log_level: "INFO"
      cleanup_generated_images: false
      enabled_if_env: null
      temp_dir: null
  • output_dir:
    • Defaults to assets/images.
    • The directory where generated PNG images will be saved, relative to your docs directory.
  • image_format:
    • Defaults to png.
    • The output format for the generated images. Currently, only png is supported.
  • dpi:
    • Defaults to 300.
    • The Dots Per Inch (DPI) for rendering SVG to PNG. Higher values result in larger, higher-resolution images.
  • quality:
    • Defaults to 95.
    • The quality of the output PNG image, a value between 0 (lowest) and 100 (highest). Only applicable for PNG output.
  • background_color:
    • Defaults to transparent.
    • The background color for the generated PNG images. Can be a color name (e.g., white), a hex code (e.g., #FFFFFF), or transparent.
  • cache_enabled:
    • Defaults to true.
    • If true, generated images will be cached to avoid re-rendering on subsequent builds if the SVG content hasn't changed.
  • cache_dir:
    • Defaults to .svg_cache.
    • The directory where cached images are stored, relative to the project root.
  • preserve_original:
    • Defaults to false.
    • If true, the original SVG code block or image reference will be preserved in the Markdown output, in addition to the generated PNG image.
  • error_on_fail:
    • Defaults to false.
    • If true, the MkDocs build will fail if any SVG to PNG conversion encounters an error. If false, errors will be logged, and the original SVG content will be kept.
  • log_level:
    • Defaults to INFO.
    • Sets the logging level for the plugin. Can be DEBUG, INFO, WARNING, or ERROR.
  • cleanup_generated_images:
    • Defaults to false.
    • If true, generated PNG images will be removed from the output_dir after the MkDocs build is complete. This is useful for CI/CD pipelines.
  • enabled_if_env:
    • Defaults to null.
    • If set to an environment variable name, the plugin will only be enabled if that environment variable is set to a non-empty value. Useful for conditional builds (e.g., only enable for PDF builds).
  • temp_dir:
    • Defaults to null.
    • Specifies a directory for temporary files created during the conversion process. If null, the system's default temporary directory will be used.

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

mkdocs_svg_to_png-0.0.7.tar.gz (968.2 kB view details)

Uploaded Source

Built Distribution

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

mkdocs_svg_to_png-0.0.7-py3-none-any.whl (24.6 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_svg_to_png-0.0.7.tar.gz.

File metadata

  • Download URL: mkdocs_svg_to_png-0.0.7.tar.gz
  • Upload date:
  • Size: 968.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mkdocs_svg_to_png-0.0.7.tar.gz
Algorithm Hash digest
SHA256 da65907ee22f10d1ef5cd941982dd9bd78697f8c1c5398b9bb39f32f34763c6e
MD5 1a6c4e49d9ac8ed8c884f8a4d62547c7
BLAKE2b-256 f6f347787bb631b1716b43bacce27f1c09473688c4b5dfca273e913aaa382fba

See more details on using hashes here.

File details

Details for the file mkdocs_svg_to_png-0.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for mkdocs_svg_to_png-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d9417eb84e089a4ac143880f4e9f2b08139c4e140148fcaf6e3002cf449e5600
MD5 6e329fcbff521823f2d313fabbd1bd3e
BLAKE2b-256 4bfb07cfda69cb3f6494a95d4c1dcc96fde62b128cf515f3ef1a719a56a41ab4

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