# 📑 Batch PDF Export **Export a whole folder of Obsidian notes to PDF, one file per note or one combined book.** [![Obsidian plugin](https://img.shields.io/badge/Obsidian-Community%20plugin-7C3AED?logo=obsidian&logoColor=white)](https://community.obsidian.md/plugins/batch-pdf-export) [![Downloads](https://img.shields.io/badge/dynamic/json?logo=obsidian&logoColor=white&color=7C3AED&label=downloads&query=%24%5B%22batch-pdf-export%22%5D.downloads&url=https%3A%2F%2Fraw.githubusercontent.com%2Fobsidianmd%2Fobsidian-releases%2Fmaster%2Fcommunity-plugin-stats.json)](https://community.obsidian.md/plugins/batch-pdf-export) [![Latest release](https://img.shields.io/github/v/release/Dryd33n/obsidian-batch-pdf-export?color=7C3AED&label=release)](https://github.com/Dryd33n/obsidian-batch-pdf-export/releases/latest) [![Lint](https://img.shields.io/github/actions/workflow/status/Dryd33n/obsidian-batch-pdf-export/lint.yml?branch=master&label=lint)](https://github.com/Dryd33n/obsidian-batch-pdf-export/actions/workflows/lint.yml) [![License: 0BSD](https://img.shields.io/badge/license-0BSD-blue)](LICENSE) ### [**→ Get it from the Obsidian community plugins**](https://community.obsidian.md/plugins/batch-pdf-export) [Features](#-features) · [Install](#-installation) · [Usage](#-usage) · [Settings](#%EF%B8%8F-settings) · [Limitations](#%EF%B8%8F-limitations) · [Contributing](#-contributing)
--- ## ✨ Features
### 🖨️ Faithful rendering - Looks like **Reading view**: math, Mermaid, callouts, code, tables, images and embedded notes - Clean light print style, whatever your theme - **Dark or light code**, set separately for inline code and code blocks - Keeps the styling of plugin content, including Code Styler code blocks - Title and date at the top of every note - Every note starts on a new page ### 📚 Combined PDF extras - Title page and **linked table of contents** with page numbers - **Choose the note order** by dragging, or sort by name or date - Links between notes, headings and blocks **work inside the PDF** - PDF bookmarks grouped by folder - Page numbers, page size and orientation settings
**Leave out** any notes or subfolders you don't need, in either mode. Exports show a progress notice with a **Cancel** button, so long batches never lock you in, and finish with a button to open the PDF or folder. ## 📦 Installation > [!IMPORTANT] > Desktop only: Windows, macOS and Linux. **From Obsidian (recommended)** 1. Open **Settings → Community plugins → Browse**. 2. Search for **Batch PDF Export**. 3. Select **Install**, then **Enable**. Or open the [plugin listing](https://community.obsidian.md/plugins/batch-pdf-export) directly.
Manual install 1. Download `main.js`, `manifest.json` and `styles.css` from the [latest release](https://github.com/Dryd33n/obsidian-batch-pdf-export/releases/latest). 2. Copy them into `/.obsidian/plugins/batch-pdf-export/`. 3. Reload Obsidian and enable the plugin in **Settings → Community plugins**.
Beta builds with BRAT 1. Install [BRAT](https://github.com/TfTHacker/obsidian42-brat). 2. Select **Add beta plugin** and enter `Dryd33n/obsidian-batch-pdf-export`.
## 🚀 Usage 1. Right-click a folder and select **Export folder to PDF**, or run **Export folder to PDF…** from the command palette (Ctrl/Cmd + P). 2. Pick **One PDF per note** or **One combined PDF**. 3. Optionally, select **Reorder and remove…** (combined) or **Remove notes…** (one per note) to change the note order or leave notes out. See [Note order](#-note-order). 4. Optionally, open **Advanced** to change code colors or use your theme for this export. Select **Save as default** to keep the choices for next time. 5. Select **Export** and choose where to save. When it finishes, select **Open PDF** or **Open folder** in the notice. > [!TIP] > Want a single shareable document? Choose **One combined PDF**. You get a title page, a clickable table of contents, and bookmarks for every folder. ### 🔀 Note order Notes are exported in alphabetical order, each folder's notes before its subfolders. To change that, select **Reorder and remove…** in the export dialog: - **Drag** a note or folder, or use the **↑ ↓** buttons, to move it within its folder. Notes stay in their own folder, so the table of contents and bookmarks keep the folder structure. - **Sort by** name, date created or date modified, then adjust from there. - Select **✕** to leave a note or a whole folder out. Removed items are listed under **Removed**, where you can restore them. - Select **Done** to use the order for this export, or **Save for next time** to keep it for this folder. Saved orders follow notes when they are renamed or moved. New notes are added at the end of their folder. Select **Reset** in the export dialog to go back to alphabetical order and forget the saved order. ## ⚙️ Settings Defaults for every export, under **Settings → Batch PDF Export**: | Setting | Default | | :--- | :--- | | Export mode | One PDF per note | | Include subfolders | ✅ On | | Page size | A4, portrait | | Margins | 15 mm | | Page numbers | ✅ On | | Title page and table of contents | ✅ On | | Date shown | `date` property, else date modified | | Date format | `YYYY-MM-DD` | | Inline code colors | Light (also Dark, or Match app) | | Code block colors | Light (also Dark, or Match app) | | Use community theme and snippets | ⬜ Off | | Render timeout | 10 s per note | ## ⚠️ Limitations - Embedded PDFs, audio, video and canvases print as placeholders. - Links between separate PDFs work in desktop viewers (Acrobat, Foxit, SumatraPDF), but not in most browsers. - Code block options read from the fence line by some plugins (Shiki titles and line numbers, Advanced Codeblock line numbers) are not printed, the same as in Obsidian's own PDF export. Code Styler is supported. - Mermaid diagrams need your vault's Mermaid permission. The export asks for it if it's missing. > [!NOTE] > Slow plugin content such as Dataview may need more time. Increase **Render timeout** if it comes out blank. > [!NOTE] > **Privacy:** everything runs locally. PDFs are saved only where you choose, and nothing else outside the vault is touched. ## 🤝 Contributing Issues and pull requests are welcome. - 🐛 **Bugs:** [open an issue](https://github.com/Dryd33n/obsidian-batch-pdf-export/issues) with your Obsidian version, OS and, if you can, a sample note that reproduces the problem. - 💡 **Features:** open an issue to discuss before starting large changes.
Development setup ```bash git clone https://github.com/Dryd33n/obsidian-batch-pdf-export.git cd obsidian-batch-pdf-export npm install npm run dev # rebuild main.js on change ``` Copy `main.js`, `manifest.json` and `styles.css` into a **test vault** at `.obsidian/plugins/batch-pdf-export/`, then reload Obsidian.
Pull request checklist - [ ] Branch from `master` and keep each PR focused on one change. - [ ] `npm run lint` and `npm run build` pass with no errors. - [ ] Both export modes tested in Obsidian, and the PR describes what you tested. - [ ] No `main.js` or other build output committed. - [ ] Any UI text uses sentence case.
Code layout | Path | Contents | | :--- | :--- | | `src/main.ts` | Plugin lifecycle | | `src/commands/` | Command and folder menu | | `src/ui/` | Modals and notices | | `src/export/` | Rendering, links, printing and PDF post-processing | | `src/utils/` | Electron, path and HTML helpers |
Releasing Bump `version` in `manifest.json`, `package.json` and `versions.json`, then push a tag with the same version (no `v` prefix). CI builds the plugin and creates a draft release for you to publish.
---
Made for Obsidian by Dryd33n · 0BSD license