Skip to main content

Markdown to HTML/PDF document converter

Project description

mddoco

A CLI tool that converts markdown files to a single HTML (or future PDF) document.

Installation

pip install mddoco
playwright install chromium

Or for development:

pip install -e .
playwright install chromium

Playwright (Chromium) is required for PDF output only. HTML output works without it.

Usage

mddoco [OPTIONS] INPUT_PATH

INPUT_PATH can be a directory (all *.md files are found recursively and sorted) or a single .md file.

Options

Option Short Default Description
--output PATH -o . Directory to write the output file
--format [html|pdf] -f html Output format
--title TEXT -t (none) Document title shown at the top of the page
--theme NAME default Theme to use for rendering
--toc / --no-toc off Generate a table of contents
--toc-depth N 3 Maximum heading depth included in the TOC (1–6)

Examples

Convert all markdown files in a directory:

mddoco ./docs

Convert a single file:

mddoco README.md

With a title, TOC, and custom output directory:

mddoco ./docs --title "My Project" --toc --output ./out

Output

All matched markdown files are combined into a single HTML document in the output directory. The filename is derived from the input folder or file name.

Themes

Themes are self-contained Jinja2 HTML files with embedded CSS. The default theme includes:

  • Clean typographic layout
  • Syntax-highlighted code blocks
  • Styled tables and blockquotes
  • Optional document title
  • Optional table of contents
  • Mermaid.js diagram support (loaded only when diagrams are present)

Graph diagrams

Use ```graph fenced blocks with a JSON payload. The only required field is data.

Minimal example — all defaults applied:

```graph
{
  "data": {
    "x": ["Jan", "Feb", "Mar"],
    "Sales": [100, 150, 120]
  }
}
```

Series are inferred from the data keys (everything except x). Each series defaults to a line chart in blue.

Full schema:

Field Required Default Description
data.x yes Category labels
data.<name> yes Values for each series (one key per series)
title no (none) Chart title
orientation no vertical vertical or horizontal
show_legend no true Show the legend
width_px no 640 Width in pixels
height_px no 480 Height in pixels
min / max no Axis bounds
series no (auto) Override series definitions (see below)

Series fields (all optional when auto-generated):

Field Default Description
label (data key) Must match a key in data
type line bar, line (solid), or line2 (dotted)
colour (palette) Colour string, or list of colours per bar
marker false Show point markers (line types only)

Full example:

```graph
{
  "title": "Sales vs Target",
  "orientation": "vertical",
  "show_legend": true,
  "data": {
    "x": ["Jan", "Feb", "Mar", "Apr", "May"],
    "Sales":  [85, 92, 78, 96, 110],
    "Target": [90, 90, 90, 90, 90]
  },
  "series": [
    { "label": "Sales",  "type": "bar",  "colour": "#3498db" },
    { "label": "Target", "type": "line", "colour": "#e74c3c", "marker": false }
  ]
}
```

Mermaid diagrams

Use standard fenced code blocks in your markdown:

```mermaid
graph TD
    A[Start] --> B[End]
```

mddoco detects mermaid blocks automatically and loads the Mermaid.js CDN only when needed.

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

mddoco-0.1.1.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

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

mddoco-0.1.1-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file mddoco-0.1.1.tar.gz.

File metadata

  • Download URL: mddoco-0.1.1.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mddoco-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9d5ea3b403926ee3b879a2441f0ff9d550d71d3b28bac391f0c212cccb20e76d
MD5 9e28e3247a81031490bb5bee809b8d0b
BLAKE2b-256 c5d59ddd64f2ad7aede1b402b8b62ea2478fa480c7185618b5d75ac4cffc436b

See more details on using hashes here.

File details

Details for the file mddoco-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mddoco-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mddoco-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 75fb9fe05e88d652a60aa3976ad2e19e3f3d7a2e5dc89deb00d6eaa555b9435f
MD5 9cc24255da39ac58aec70909ae689d50
BLAKE2b-256 6c565c7fa4fb524d7c3add4b3dadbeeb8394f19ce89c6f66618a854beabf66f6

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