Command line tool to generate empty calendar templates to print. Outputs PDF and SVG.
papr month -o calendar.pdf -y 2026 -p A4
papr month -o calendar.svg -y 2026 -p A4
papr big -o year.pdf -y 2026 -f 'Avenir Next' -p A3brew tap peetzweg/tap brew install papr
Requires system libraries: Cairo and Pango.
# macOS brew install pango cairo # Debian/Ubuntu apt install libpango1.0-dev libcairo2-dev # Then install papr cargo install --git https://github.com/peetzweg/papr
git clone https://github.com/peetzweg/papr.git cd papr cargo build --release # Binary at ./target/release/papr
Each layout is a subcommand with shared options and optional layout-specific flags:
papr <COMMAND> [OPTIONS]
Commands:
month Single month portrait calendar
big Full year landscape, days flow in rows
classic Two months landscape, columnar layout
column Four months landscape, vertical columns
oneyear Full year on one landscape sheet
batch Generate calendars from a YAML batch config
| Flag | Description | Default |
|---|---|---|
-o, --output <FILE> |
Output file (.pdf or .svg, detected from extension) |
out.pdf |
-y, --year <YEAR> |
Calendar year | current year |
-m, --month <MONTH> |
Starting month (1-12) | current month |
-p, --paper <SIZE> |
Paper size | A4 |
-f, --font <FONT> |
Font family (pass twice for heading + body font) | Sans |
-l, --locale <LOCALE> |
Locale for date formatting | en_US |
--margin <MM> |
Page margin in millimeters | 5 |
Paper sizes: A5, A4, A3, A2, A1, A0, USLetter, USTabloid, USLedger
classic and column:
| Flag | Description |
|---|---|
-a |
Abbreviate weekday names |
-A |
Abbreviate both weekday and month names |
classic only:
| Flag | Description |
|---|---|
-b, --brand <TEXT> |
Brand string printed on the calendar |
-c, --color |
Color date numbers |
# Portrait month calendar papr month -o april.pdf -y 2026 -m 4 -p A4 # Full year with custom font on A3 papr big -o 2026.pdf -y 2026 -f 'Avenir Next' -p A3 # Classic layout with abbreviated weekdays and branding papr classic -o classic.pdf -y 2026 -a -b "My Calendar" -c # Four-month column layout, starting June papr column -o summer.pdf -y 2026 -m 6 # One-year overview with separate heading font papr oneyear -o overview.svg -y 2026 -f Sans -f 'Georgia' # SVG output (detected from file extension) papr month -o calendar.svg
See the full layout documentation for visual examples and detailed descriptions.
| Layout | Orientation | Description |
|---|---|---|
month |
Portrait | Single month with header and 7-column grid |
big |
Landscape | Full year, days in rows of 21 columns with flag labels |
classic |
Landscape | Two months, designed for back-to-back printing |
column |
Landscape | Four months in vertical columns with fold margin |
oneyear |
Landscape | Full year as 12 mini-columns |
Generate many calendars at once from a YAML config file. See the batch mode documentation for the full schema and examples.
papr batch config.yaml
defaults: year: 2026 font: "Avenir Next" matrix: layout: [month, big, classic, oneyear] paper: [A4, A3] month: [1, 6] exclude: - layout: big paper: A3 month: 6 output: "calendars/{layout}_{year}_{month}_{paper}.pdf"