Daren Thomas22 downloadsCreate print-ready session notes, reference sheets, index cards, and booklets from Markdown.
Create print-ready session notes, reference sheets, index cards, books, and booklets from Markdown inside Obsidian.
Trolls' Printing Press keeps Markdown as the canonical source and uses a bundled Typst WebAssembly compiler for reproducible print layouts. It includes the publishing profiles developed for tabletop RPG session preparation and small-format rulebooks.
Generated PDFs are written to publishing/output beneath the active note's
folder by default. The destination is configurable in the plugin settings.
Two-column books use -two-column.pdf; their booklets use
-two-column-booklet.pdf, so they can coexist with the single-column versions.
The Markdown stays readable in Obsidian; a few conventions steer the print layout.
✂️--- on a line of its own starts a new page (or a new card page).title: frontmatter field when present, and
a subtitle: field is set beneath it on the first page.![[map.png|wide]] lets a picture span both columns of a two-column
layout. Without the hint a picture stays inside its column. Picture height
is capped, but pictures can still move following text onto another page.
A wide picture immediately before a page break may occupy a page on its own.The printing press supplies its own layouts, fonts, Markdown conversion rules, and PDF tooling. Templates and typography are not configurable. This keeps the output predictable and lets every profile be designed and tested as a whole. Session notes use Alegreya for body copy and Alegreya Sans for headings.
No external programs are required. Typst, the fonts, PDF merging, and booklet imposition are bundled with the plugin and run locally. Publishing does not send note contents over the network.
The initial release is desktop-only while the bundled worker runtime is tested across Obsidian's desktop platforms.
Print the -booklet.pdf file double-sided at actual size. Use landscape paper,
flip on the short edge, fold the sheets down the middle, and nest them in order.
npm install
npm run lint
npm run build
npm test
For local development, clone the repository directly into an Obsidian vault's
.obsidian/plugins/trolls-printing-press directory and run npm run dev.
For a clean installation check, run npm run prepare:test-vault after building,
then open the generated test-vault folder as a vault in Obsidian. It contains
only the release assets and a sample note for exercising all six publishing
commands. The test vault is ignored by Git.
Enable community plugins in that vault. With Obsidian's CLI enabled, run the installation and lifecycle checks from PowerShell:
obsidian vault=test-vault eval code="eval(require('fs').readFileSync(require('path').join(app.vault.adapter.getBasePath(),'../scripts/check-test-vault.js'),'utf8'))"
The check regenerates six PDFs, verifies settings persistence, and checks that disabling the plugin removes its commands and terminates its compiler worker.
The production build bundles the Typst engine, fonts, and layouts into
main.js, because Obsidian installs only main.js, manifest.json, and the
optional styles.css from a plugin release. The engine and fonts are stored
Brotli-compressed and unpacked with Node's zlib when the first document is
published. Build with Node 22 (see .nvmrc): the compressor output depends on
the Node version, and releases must be reproducible from the tagged commit.
Until the plugin is available in Obsidian's community directory, install it with BRAT using:
daren-thomas/trolls-printing-press
Trolls' Printing Press is released under the MIT License. Bundled components and fonts are covered by their respective licenses; see third-party notices.