Markdown Editor: Offline, schnell, produktiv
Desktop-Editor mit Live-Vorschau, Tabs und Syntax-Highlighting
Python
markdown2
PyQt
🚀 Ihr Desktop-Markdown-Editor. Offline. Produktiv.
💰 Warum ein Desktop-Markdown-Editor?
Online-Editoren sind praktisch — aber bei sensiblen Dokumenten oder schlechter Internetverbindung ist ein lokaler Editor unschlagbar. Volle Kontrolle, null Abhängigkeiten.
Offline-first
Keine Cloud, keine Datenübertragung — Ihre Dokumente bleiben auf Ihrem Rechner.
Tab-Support
Mehrere Dokumente gleichzeitig offen — wie in VS Code, aber fokussiert auf Markdown.
Syntax-Highlighting
Markdown-Syntax farbig hervorgehoben — Überschriften, Fett, Code, Links sofort erkennbar.
Multi-Export
Export als HTML, PDF oder direkt als formatierte Markdown-Datei für GitHub & Co.
⚙️ So funktioniert's
Linke Seite: Editor mit Highlighting. Rechte Seite: Live-Vorschau. Dazwischen: Alles lokal.
Schreiben & Formatieren
Volle Markdown-Unterstützung: Überschriften, Fett/Kursiv, Listen, Tabellen, Code-Blöcke, Blockquotes.
Live-Vorschau
Sekündliche Aktualisierung der HTML-Vorschau — sehen Sie sofort, wie Ihr Dokument aussieht.
Suchen & Ersetzen
Regex-basierte Suche mit Replace-Funktion — für schnelles Refactoring langer Dokumente.
💻 Technische Umsetzung
🐍 Python-Backend mit markdown2
import markdown2
import os
from pathlib import Path
class MarkdownEngine:
def __init__(self):
self.extras = [
'fenced-code-blocks',
'tables',
'break-on-newline',
'header-ids',
'footnotes',
'strike',
'task_list',
'code-friendly'
]
def render(self, md_text: str) -> str:
"""Konvertiert Markdown zu HTML"""
html = markdown2.markdown(md_text, extras=self.extras)
return self._wrap_html(html)
def _wrap_html(self, body: str) -> str:
"""Wrapper mit GitHub-Markdown-CSS"""
return f'''<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
<style>
body {{ font-family: -apple-system, sans-serif; max-width: 800px; margin: auto; }}
pre {{ background: #f6f8fa; padding: 16px; border-radius: 6px; overflow-x: auto; }}
table {{ border-collapse: collapse; width: 100%; }}
th, td {{ border: 1px solid #ddd; padding: 8px; text-align: left; }}
</style>
</head>
<body>{body}</body>
</html>'''
def export_html(self, md_text: str, output_path: str) -> str:
"""Exportiert als vollständige HTML-Datei"""
html = self.render(md_text)
with open(output_path, 'w', encoding='utf-8') as f:
f.write(html)
return output_path
def get_toc(self, md_text: str) -> list:
"""Extrahiert Inhaltsverzeichnis aus Überschriften"""
import re
headers = re.findall(r'^(#{1,6})\s+(.+)$', md_text, re.MULTILINE)
return [{'level': len(h[0]), 'title': h[1]} for h in headers]
# Nutzung
engine = MarkdownEngine()
markdown = """# Mein Projekt
## Einleitung
Das ist ein **wichtiges** Projekt.
| Feature | Status |
|---------|--------|
| Login | ✅ |
```python
print("Hello World")
```
"""
html = engine.render(markdown)
engine.export_html(markdown, 'doku.html')
toc = engine.get_toc(markdown)
print(f"Inhaltsverzeichnis: {len(toc)} Einträge")
⚡ In 2 Tagen zum Desktop-Markdown-Editor.
Maßgeschneiderter Markdown-Editor?
Mit Ihren Features, Ihrer Marke, Ihrem Workflow. Jetzt unverbindlich anfragen.