A template-first Markdown rendering system that converts Markdown with YAML frontmatter into PDF, SVG, and other output formats.
Maintained by tonguetoquill.com.
UNDER DEVELOPMENT
- Template-first design: Quill templates control structure and styling, Markdown provides content
- YAML metadata: Extended YAML support for inline metadata blocks
- Multiple backends:
- PDF and SVG output via Typst backend
- PDF form filling via AcroForm backend
- Structured error handling: Clear diagnostics with source locations
- Dynamic asset loading: Fonts, images, and packages resolved at runtime
- User Guide - Tutorials, concepts, and language bindings
- Rust API Reference - for the Quillmark crate
Add Quillmark to your Cargo.toml:
cargo add quillmarkuse quillmark::{Quillmark, OutputFormat, ParsedDocument};
use quillmark_core::Quill;
// Create engine with Typst backend
let mut engine = Quillmark::new();
// Load a quill template
let quill = Quill::from_path("path/to/quill")?;
engine.register_quill(quill);
// Parse markdown once
let markdown = "---\ntitle: Example\n---\n\n# Hello World";
let parsed = ParsedDocument::from_markdown(markdown)?;
// Load workflow and render to PDF
let workflow = engine.workflow("quill_name")?;
let result = workflow.render(&parsed, Some(OutputFormat::Pdf))?;
// Access the generated PDF
let pdf_bytes = &result.artifacts[0].bytes;Run the included examples:
cargo run --example appreciated_letter
cargo run --example usaf_memo
cargo run --example taro
cargo run --example usaf_form_8
cargo run --example auto_plate
cargo run --example test_defaultsThis workspace contains:
- crates/core - Core parsing, templating, and backend traits
- crates/quillmark - High-level orchestration API
- crates/backends/typst - Typst backend for PDF/SVG output
- crates/backends/acroform - AcroForm backend for PDF form filling
- crates/bindings/python - Python bindings (PyO3)
- crates/bindings/wasm - WebAssembly bindings
- crates/bindings/cli - Command-line interface
- crates/fixtures - Test fixtures and utilities
- crates/fuzz - Fuzz testing suite
Licensed under the Apache License, Version 2.0. See LICENSE for details.