DasMDF is a modern desktop GUI tool that converts Markdown (.md) files into beautifully formatted PDF documents using multiple rendering engines. Built using PyQt6 (with a legacy version in CustomTkinter), DasMDF is fast, flexible, and ready for open-source contribution.
A ready-to-use Windows executable for the PyQt6 version is available—no setup required!
The .exe includes all dependencies, including wkhtmltopdf and Playwright (note: this increases the file size).
Just download, extract, and run the executable.
- Convert Markdown to PDF in a click
- Supports multiple rendering engines
- PyQt6 UI for rich, responsive user experience
- Code highlighting, LaTeX, emoji & image rendering support (engine-dependent)
- Simple, elegant design for daily use
DasMDF/
├── pyqt6_version/
│ ├── dasmdf.py
│ ├── requirements.txt
│ └── icon/
│ └── icon.png
├── ctk\_version/ ← Legacy version (CustomTkinter)
│ ├── dasmdf.py
│ └── requirements.txt
├── assets/
│ └── \*.css
├── LICENSE
└── README.md
The PyQt6 version is the primary and actively developed version of DasMDF.
We transitioned from CustomTkinter because:
- CTk lacks proper emoji rendering in text boxes
- PyQt6 provides more flexibility, better widget control, and cross-platform rendering consistency
To run:
cd pyqt6_version
pip install -r requirements.txt
python dasmdf.pyYou can still use the legacy CTk GUI version (not actively maintained):
cd ctk_version
pip install -r requirements.txt
python dasmdf.py| Engine | Type | Quality | Speed | Supports |
|---|---|---|---|---|
| Playwright | Headless browser | ⭐ Best | ⚡ Fastest | Full CSS, LaTeX (MathJax), code, images, emojis |
| WeasyPrint | Pure Python | ⭐ Medium | 🐢 Slowest | CSS, code highlighting, limited image/emoji/LaTeX |
| wkhtmltopdf | Native executable | ⭐ Low | 🚀 Faster | Basic CSS, poor LaTeX, partial image, no emoji support |
-
Windows: Download and add to PATH
-
Linux:
sudo apt install wkhtmltopdf
Use the relevant version's requirements file:
# For PyQt6 version
cd pyqt6_version
pip install -r requirements.txt
# For CTk version (legacy)
cd ctk_version
pip install -r requirements.txtplaywright install- ✅ Switch to PyQt6
- ✅ Version-specific
requirements.txt - ✅ Executable build for PyQt6 (with all dependencies)
- 🔜 Markdown live preview
- 🔜 Settings and export options
- 🔜 CLI support (optional)
We welcome pull requests and issue reports! Please follow PEP8 guidelines and keep your commits clean and descriptive.
This project is licensed under the MIT License. See the LICENSE file for details.