Markdown to PDF & Word
A Visual Studio Code extension that turns Markdown into a clean, professional document — PDF, Word (.docx), or HTML — with a visual customization studio, reusable document profiles, and a rule-based cleanup engine that strips AI clutter. No Pandoc. No CSS. No setup. Table of Contents
About ProjectMarkdown is great for developers and AI tools, but raw Markdown to PDF & Word solves this entirely inside VS Code. It cleans the Markdown, applies a professional layout (cover page, branding, headers/footers, table of contents), and exports a polished PDF, Word, or HTML document you can send to anyone — all in one click, with nothing else to install (no Pandoc, no external tools). It is designed for developers who dislike reading raw Markdown and who frequently need to share AI- or hand-written Markdown as a real, presentable document. Why This ExtensionMost existing tools do one piece of this. None combine them:
Features
InstallationFrom the VS Code Marketplace (recommended)
Or install from the command line:
From a
|
| Command | Description |
|---|---|
MarkReady: Open Customization Studio |
Visual editor + live preview + export buttons |
MarkReady: Export as PDF |
Clean + render the active file to PDF |
MarkReady: Export as Word (DOCX) |
Clean + render the active file to Word (no Pandoc) |
MarkReady: Export as HTML |
Clean + render the active file to HTML |
MarkReady: Clean Markdown |
Open a cleaned copy of the active file |
MarkReady: Gather Folder into One Document |
Combine all .md in a folder into one document |
Settings
| Setting | Default | Description |
|---|---|---|
markready.defaultProfile |
HR Formal |
Profile used by the quick export commands |
markready.chromePath |
"" |
Optional path to a Chrome/Edge/Chromium executable for PDF export |
markready.cleanup.removeChatter |
true |
Remove AI intros/outros |
markready.cleanup.removeEmoji |
true |
Strip emoji from headings and text |
markready.cleanup.normalizeHeadings |
true |
Normalize heading spacing |
markready.cleanup.normalizeWhitespace |
true |
Collapse excessive blank lines |
markready.cleanup.normalizePunctuation |
true |
Convert smart quotes/dashes to ASCII |
How It Works
.md -> cleanup (rules, no AI) -> markdown-it -> HTML + cover + TOC + CSS -> PDF | DOCX | HTML
^
Document Profile (JSON)
The Customization Studio edits the Profile JSON and renders the preview through the same pipeline used for export, so what you see is what you get.
Document Profiles
A profile is a small JSON file describing the cover page, branding, header/footer, layout, and options. Saving a profile writes it to:
<your-project>/.markready/profiles/<profile-name>.json
Commit this file to your repository and everyone on the team exports documents with the same look. Built-in presets are available out of the box and can be cloned and customized.
Build From Source
# 1. Clone
git clone https://github.com/anandsundaramoorthysa/markdown-to-pdf-word.git
cd markdown-to-pdf-word
# 2. Install dependencies (Puppeteer downloads Chromium once)
npm install
# 3. Compile
npm run compile
# 4. Launch the Extension Development Host
# Press F5 in VS Code
To package a .vsix:
npm install -g @vscode/vsce
vsce package
Contribution
Contributions are welcome — bug fixes, new presets, new features, or docs.
Guidelines
- Discuss first: for anything non-trivial, open an issue before coding.
- Understand the codebase: the pipeline is
cleanup.ts -> render.ts -> exporters/*, with the UI inpanel.ts(studio) andgatherPanel.ts(folder gather). - Keep the cleanup safe: the cleanup engine must never delete real content — add tests when adding rules.
- Match the style: TypeScript, no emoji in code or UI (use Codicons).
Steps
- Fork the repository.
- Create a branch:
git checkout -b feature/your-feature. - Make your changes and run
npm run compile. - Commit with a clear message.
- Open a pull request describing your change and linking any related issue.
Roadmap
- [ ] AI tone-polish (optional, bring-your-own-key)
- [ ] Logo positioning and watermarks
- [ ] Code-block theme options
- [ ] Publish to Open VSX (for Cursor / VSCodium / Windsurf)
- [ ] More built-in profile presets
See PLAN.md for the full design and roadmap.
License
This project is released under the MIT License. You are free to use, modify, and distribute it under the terms of this license. See the LICENSE file for the full text.
Contact Me
If you have any questions, feedback, or suggestions, feel free to reach out:
- Anand Sundaramoorthy — sanand03072005@gmail.com
- GitHub: @anandsundaramoorthysa
Acknowledge
Built with these excellent open-source projects:
- markdown-it — Markdown parsing and rendering
- Puppeteer — HTML to PDF via headless Chromium
- html-to-docx — HTML to Word, no Pandoc
- VS Code Codicons — the icon set used in the UI
Thanks to the VS Code extension community for the guidance and inspiration.