ZazenCodes20 downloadsExport notes as clean dark-mode PDFs using the native PDF exporter.
Dark PDF Export is a desktop plugin for Obsidian by ZazenCodes.
It applies a stable dark stylesheet to Obsidian's native Export to PDF workflow.
Styles can be customized interactively using the Style Settings community plugin.
🔗 Get it on Obsidian Community Plugins

Install "Dark PDF Export" from the Obsidian community plugins marketplace or install manually.
Enable the plugin, open a note, and use Obsidian's native Export to PDF command. Dark PDF styling is enabled by default when the plugin is first turned on.
The plugin settings page under Settings → Community plugins → Dark PDF Export contains a toggle:
Use the Style Settings community plugin. Dark PDF Export automatically registers a configuration panel under Settings → Style Settings → Dark PDF Export.
You can visually customize color swatches using native color pickers for:
--dark-pdf-background): The base background color for the PDF page.--dark-pdf-surface): Background for code blocks, inline code, and callouts.--dark-pdf-border): Borders for tables, blockquotes, and dividers.--dark-pdf-text): Main paragraph and list text.--dark-pdf-heading): Headings H1 through H6 and inline titles.--dark-pdf-muted): Faint metadata, footnotes, and secondary text.--dark-pdf-accent): Internal/external links and highlighted accents.Changes made in Style Settings take effect immediately on your next export without requiring a vault reload.
main.js, manifest.json, and styles.css from the same GitHub release.<vault>/.obsidian/plugins/dark-pdf-export/.The folder name must match the plugin ID: dark-pdf-export. The plugin requires desktop Obsidian 1.12.0 or newer.
Dark PDF Export works locally. It has no account, ads, telemetry, analytics, or network requests. It does not read or modify notes, attachments, vault metadata, themes, snippets, appearance settings, or other plugins' settings. Plugin settings are stored only through Obsidian's supported plugin data API; the runtime contains no hard-coded vault or .obsidian path.
Node.js 24 and npm are used for reproducible development and CI.
npm ci
npm run typecheck
npm run lint -- --max-warnings=0
npm test
npm run build
npm run release:validate -- 1.0.1
npm run dev starts the esbuild watcher. Production builds are minified and write the main.js bundle. A release consists of main.js, manifest.json, and styles.css from one production build.
minAppVersion in manifest.json and commit that compatibility change first.npm version patch, npm version minor, or npm version major. The version hook updates manifest.json and maps the release to its minimum Obsidian version in versions.json. npm tags use the exact unprefixed x.y.z version.Before the initial Community directory submission, complete Obsidian's current plugin self-critique, publish the 1.0.0 release, and submit the repository. The Community directory runs automated review; fix any findings in source and publish a new incremented release rather than reusing a version number.
Report bugs and compatibility problems through GitHub Issues. Include your Obsidian version, plugin version, operating system, and a minimal CSS or export example when relevant.
MIT © ZazenCodes.