Skip to main content

Convert Markdown to PDF with Japanese support and MermaidJS diagrams

Project description

gospelo-md2pdf

Convert Markdown to PDF with Japanese support and MermaidJS diagrams.

Features

  • Japanese Text Support: Full support for Japanese fonts (Noto Sans CJK JP, Hiragino Sans, Yu Gothic)
  • MermaidJS Diagrams: Automatically renders Mermaid diagrams as PNG images
  • Custom CSS: Use your own stylesheets or the built-in professional style
  • Markdown Extensions: Tables, fenced code blocks, TOC, metadata, and more
  • Special HTML Classes: Summary boxes, warnings, pros/cons sections, page breaks

Installation

pip install gospelo-md2pdf

System Dependencies

WeasyPrint requires system libraries. Install them first:

macOS:

brew install pango glib gdk-pixbuf libffi

Ubuntu/Debian:

sudo apt install libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0

Japanese Fonts (Recommended)

For Japanese text rendering:

macOS:

brew install font-noto-sans-cjk-jp

Ubuntu/Debian:

sudo apt install fonts-noto-cjk

MermaidJS Support (Optional)

To render Mermaid diagrams:

npm install -g @mermaid-js/mermaid-cli

Quick Start

# Basic usage
gospelo-md2pdf report.md

# Specify output file
gospelo-md2pdf report.md output.pdf

# Specify output directory
gospelo-md2pdf report.md -o ./pdf

# Use custom CSS
gospelo-md2pdf report.md --css custom-style.css

# Delete intermediate HTML file
gospelo-md2pdf report.md --no-html

Usage

gospelo-md2pdf <input.md> [output.pdf] [options]

Arguments:
  input.md              Input Markdown file
  output.pdf            Output PDF file (optional)

Options:
  -o, --output-dir DIR  Output directory (default: current directory)
  -c, --css FILE        Custom CSS file
  --no-html             Delete intermediate HTML file
  --lang LANG           HTML lang attribute (default: ja)
  -q, --quiet           Suppress output messages
  --verbose             Print verbose output
  -v, --version         Show version
  -h, --help            Show help

Environment Variables

Variable Description Default
MD2PDF_OUTPUT_DIR Output directory Current directory

Note: --output-dir option takes precedence over the environment variable.

Markdown Features

Basic Syntax

# Heading 1
## Heading 2
### Heading 3

Paragraph with **bold** and *italic* text.

- Bullet list
- Another item
  - Nested item

1. Numbered list
2. Another item

> Blockquote

`inline code`

[Link](https://example.com)

Tables

| Column 1 | Column 2 | Column 3 |
|----------|----------|----------|
| A        | B        | C        |
| D        | E        | F        |

Code Blocks

```python
def hello():
    print("Hello, World!")
```

MermaidJS Diagrams

```mermaid
graph TD
    A[Start] --> B[Process]
    B --> C{Decision}
    C -->|Yes| D[Result A]
    C -->|No| E[Result B]
```

Supported diagram types:

  • Flowcharts (graph TD, graph LR)
  • Sequence diagrams (sequenceDiagram)
  • Class diagrams (classDiagram)
  • State diagrams (stateDiagram-v2)
  • ER diagrams (erDiagram)
  • And all other Mermaid diagram types

Special HTML Classes

Use these HTML classes in your Markdown for special styling:

Summary Box (Green)

<div class="summary">
Important summary points here.
</div>

Warning Box (Orange)

<div class="warning">
Warning message here.
</div>

Info Box (Blue)

<div class="info">
Additional information here.
</div>

Pros/Cons

<div class="pros">
Pros: High scalability
</div>

<div class="cons">
Cons: Initial cost
</div>

Disclaimer

<div class="disclaimer">
This report is for informational purposes only.
</div>

Page Break

<div class="page-break"></div>

Python API

from gospelo_md2pdf import convert_md_to_pdf

# Basic usage
convert_md_to_pdf("report.md")

# With options
convert_md_to_pdf(
    input_file="report.md",
    output_file="output.pdf",
    output_dir="./pdf",
    css_file="custom.css",
    keep_html=True,
    lang="ja",
    verbose=True
)

Troubleshooting

Japanese text not rendering

Check if Japanese fonts are installed:

fc-list :lang=ja | head -5

WeasyPrint library errors on macOS

Set the library path:

export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH

Add to ~/.zshrc for persistence:

echo 'export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH' >> ~/.zshrc
source ~/.zshrc

Mermaid diagrams not rendering

Verify mermaid-cli is installed:

mmdc --version

If not installed:

npm install -g @mermaid-js/mermaid-cli

Requirements

  • Python >= 3.10
  • weasyprint >= 60.0
  • markdown >= 3.5.0
  • System: pango, glib, gdk-pixbuf (see Installation)
  • Optional: @mermaid-js/mermaid-cli (for Mermaid diagrams)

Dependencies and Acknowledgements

This project uses the following open-source libraries. Full license texts are included in the LICENSE file.

Library License Description
WeasyPrint BSD 3-Clause HTML/CSS to PDF converter
Python-Markdown BSD 3-Clause Markdown to HTML converter
Mermaid CLI MIT Diagram rendering (optional)

System Libraries (Dynamically Linked)

Library License Description
Pango LGPL 2.0+ Text rendering
GLib LGPL 2.1+ Core utilities
GDK-Pixbuf LGPL 2.1+ Image loading

Note: System libraries are dynamically linked and not bundled with this package.

Fonts (Recommended)

Font License Description
Noto Sans CJK JP OFL 1.1 Japanese font by Google

Note: Fonts are not bundled with this package. Users install them separately.

License

MIT License - see LICENSE for details.

Author

NoStudio LLC (goro-hayakawa@no-studio.net)

Documentation

Links

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

gospelo_md2pdf-1.0.0.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

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

gospelo_md2pdf-1.0.0-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file gospelo_md2pdf-1.0.0.tar.gz.

File metadata

  • Download URL: gospelo_md2pdf-1.0.0.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for gospelo_md2pdf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c5731023a8a3f287244b5bcd56fa446d843682646077ec359a4e5d1ec0f167c3
MD5 1bc20ad95e7c4933f8a6488c88d21aee
BLAKE2b-256 63ca9e6a7bf32a42f4ed218377de9a66f518c3279440a20be59c3066edf2fd4a

See more details on using hashes here.

File details

Details for the file gospelo_md2pdf-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: gospelo_md2pdf-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for gospelo_md2pdf-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77350ca70fba0d5cca26be8c50b88c1311b8415927857aff2b5e1959f7a2c080
MD5 60c2b3f8cf929477ad437e2ff0c1c510
BLAKE2b-256 385ae10720ed2554ecf48aa5938e857e232f5d5897884e1ac7956750a4c2d629

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