Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Hermetic MarkdownNew to Visual Studio Code? Get it now.
Hermetic Markdown

Hermetic Markdown

BDE Business Datawarehouse Engineering GmbH

|
1 install
| (0) | Free
Self-contained, offline-capable Markdown preview with Mermaid and HTML/PDF export, without telemetry or external network access.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Markdown Preview (BDE)

Eigenständige Markdown-Vorschau für VS Code. Bewusst minimal, vollständig offline lauffähig, ohne Telemetrie und ohne externe Netzwerkaufrufe. Der Rendering-Pfad ist vollständig im Quelltext einsehbar und auditierbar.

Sicherheitsmodell

  • Strikte Content-Security-Policy im Webview: default-src 'none', Skripte nur mit zufälligem Nonce, Styles und Schriften ausschließlich aus der Extension selbst.
  • Rohes HTML standardmäßig deaktiviert (mdPreview.allowHtml = false). Markdown-Quelltext mit eingebettetem HTML wird literal escaped, nicht ausgeführt.
  • Keine externen Ressourcen by default. Remote-Bilder (https) sind über mdPreview.allowRemoteImages schaltbar; bei false nur lokale Dateien und data:-URIs. Lokale Bild-Zugriffe sind durch localResourceRoots begrenzt.
  • Mermaid wird offline gebündelt, nicht von einem CDN geladen. Diagramme werden mit securityLevel: 'strict' gerendert (sanitisierte Labels, keine HTML-Labels, keine Klick-Bindings).
  • Vier Laufzeit-Abhängigkeiten, alle weit verbreitet und gut geprüft: markdown-it, highlight.js, markdown-it-task-lists, mermaid. Alles wird beim Build per esbuild gebündelt; im VSIX liegt kein node_modules.
  • Keine Telemetrie, keine Analytics, keine Auto-Updates.

Funktionen

  • GitHub-nahe, gut lesbare Darstellung, die sich an das aktive VS-Code-Theme anpasst (Hell / Dunkel / High Contrast über die --vscode-*-Variablen).
  • Syntax-Highlighting via highlight.js, Theme-abhängiges Farbschema.
  • Mermaid-Diagramme in ```mermaid-Blöcken, Theme-synchron (hell/dunkel), live aktualisiert beim Tippen.
  • Tabellen, Aufgabenlisten (- [ ] / - [x]), Zitate, Codeblöcke.
  • Anker-Links auf Überschriften über automatische, GitHub-ähnliche Slugs.
  • Live-Aktualisierung beim Tippen (entprellt, ohne Scroll-Verlust) und beim Speichern. Inhalt wird per Nachricht ins Webview gereicht, nicht durch einen vollständigen Reload.
  • Scroll-Synchronisation Editor → Vorschau (mdPreview.syncScroll).
  • Relative Links auf andere Dateien öffnen das Ziel im Editor.
  • Export nach HTML (in sich geschlossen) und nach PDF (über den Druckdialog des Browsers).

Export

  • Als HTML exportieren erzeugt eine eigenständige .html-Datei: CSS inline, lokale Bilder als data:-URIs eingebettet, Mermaid-Diagramme als fertige SVGs. Die Datei ist portabel und braucht weder VS Code noch Internet. Ohne aktives VS-Code-Theme greifen die im CSS hinterlegten hellen Fallback-Farben.
  • Als PDF exportieren (Druckdialog) erzeugt dieselbe HTML-Ausgabe in einer temporären Datei, öffnet sie im Standardbrowser und löst den Druckdialog aus. Dort „Als PDF speichern" wählen. Dieser Weg kommt ohne gebündeltes Chromium aus und hält die Extension klein und auditierbar. Ein eingebettetes @media print-Stylesheet sorgt für sauberen Umbruch (Code-Wrapping, Seitenumbrüche vor Überschriften und um Diagramme).

Mermaid-Diagramme werden für den Export im hellen Theme über das (ggf. kurz geöffnete) Vorschau-Webview zu SVG gerendert und dann in die Ausgabe eingebettet.

Befehle

Befehl Standard-Tastenkürzel
Markdown: Vorschau öffnen Ctrl+Shift+V
Markdown: Vorschau seitlich öffnen Ctrl+K V
Markdown: Als HTML exportieren — (Befehlspalette)
Markdown: Als PDF exportieren (Druckdialog) — (Befehlspalette)

Einstellungen

Schlüssel Default Wirkung
mdPreview.allowHtml false Rohes HTML rendern (XSS-Risiko).
mdPreview.mermaid true Mermaid-Diagramme rendern.
mdPreview.breaks false Einzelne Zeilenumbrüche als <br>.
mdPreview.linkify true Bare URLs automatisch verlinken.
mdPreview.typographer false Typografische Ersetzungen.
mdPreview.allowRemoteImages true https-Bilder zulassen.
mdPreview.syncScroll true Vorschau folgt dem Editor-Scroll.

Sprachen

Die Extension ist zweisprachig (Englisch als Standard, Deutsch als Uebersetzung) und richtet sich nach der Anzeigesprache von VS Code. Statische Beitraege (Befehle, Einstellungen) werden ueber package.nls.json / package.nls.de.json uebersetzt, Laufzeit-Texte ueber vscode.l10n.t(...) mit Buendeln unter l10n/ (bundle.l10n.json als Quelle, bundle.l10n.de.json fuer Deutsch). Weitere Sprachen ergaenzt man durch zusaetzliche package.nls.<locale>.json- und l10n/bundle.l10n.<locale>.json-Dateien. Die englischen Strings im Quelltext und in package.nls.json sind der Fallback.

Build und Installation

Voraussetzung: Node.js (LTS) und npm.

npm install
npm run build          # erzeugt dist/extension.js und dist/webview.js

Zwei Bundles entstehen: dist/extension.js (Extension-Host) und dist/webview.js (Webview, inkl. gebündeltem mermaid — daher mehrere hundert KB).

Debuggen: Projekt in VS Code öffnen und F5 (Extension-Development-Host).

Paket bauen und installieren:

npm run package        # erzeugt md-preview-0.2.0.vsix
code --install-extension md-preview-0.2.0.vsix

Projektstruktur

md-preview/
├── package.json              Manifest (Befehle, Menüs, Settings)
├── esbuild.js                baut beide Bundles
├── tsconfig.json             nur Typprüfung (npm run typecheck)
├── src/
│   ├── extension.ts          Aktivierung, Webview, CSP, Scroll-Sync, Export
│   ├── markdownRenderer.ts    markdown-it, Highlighting, Slugs, Mermaid-Fence
│   └── webview/
│       └── main.ts            Webview-Client: Updates, Links, Mermaid (live+Export)
└── media/
    ├── preview.css           Lese-Styles inkl. Mermaid, an VS-Code-Theme gekoppelt
    └── highlight.css         highlight.js-Theme (Hell/Dunkel/HC)

dist/ wird beim Build erzeugt und ist nicht eingecheckt.

Hinweise und mögliche Anpassungen

  • CSP und Mermaid: Wenn Mermaid (oder rohes HTML) aktiv ist, enthält style-src zusätzlich 'unsafe-inline', weil Mermaid Inline-Styles in seine SVGs schreibt. Skripte bleiben strikt nonce-gebunden. Sollte ein Diagramm ausnahmsweise nicht erscheinen, lohnt ein Blick in die Webview-DevTools-Konsole (Befehl „Developer: Open Webview Developer Tools"): meldet sie einen CSP-Verstoß zu eval, in buildShellHtml (src/extension.ts) bei script-src ein 'unsafe-eval' ergänzen.
  • Bundle-Größe: Mermaid ist groß. mdPreview.mermaid = false schaltet das Rendering ab, verkleinert aber das Bundle nicht (es ist Teil von webview.js). Wer das Bundle ohne Mermaid will, entfernt den Import in src/webview/main.ts und baut neu.
  • Echtes headless-PDF: Der PDF-Weg nutzt bewusst den Browser-Druckdialog statt eines gebündelten Chromium. Wer voll automatisiertes PDF braucht, kann in einem separaten Schritt z. B. Puppeteer auf die exportierte HTML ansetzen.

Bekannte Grenzen

  • Scroll-Sync ist blockbasiert (data-line der obersten Blockebene), also annähernd, nicht pixelgenau.
  • Die Vorschau ist an ihr Quelldokument gebunden; sie folgt nicht automatisch dem aktiven Editor.

Lizenz

Apache License 2.0 \u2013 siehe LICENSE und NOTICE. Gebuendelte Drittanbieter- Komponenten behalten ihre eigenen Lizenzen; siehe THIRD-PARTY-NOTICES.md.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft