johnfercher/maroto
johnfercher/maroto has 2,781 GitHub stars and 261 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-07 19:48 UTC. Last push 2026-10-22.
A maroto way to create PDFs. Maroto is inspired in Bootstrap and uses gofpdf. Fast and simple.
Measured star growth
- in 24h
- +1
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalMaroto V2
A Maroto way to create PDFs. Maroto is inspired in Bootstrap and uses Gofpdf. Fast and simple.

Maroto definition: Brazilian expression, means an astute/clever/intelligent person. Art by @marinabankr
You can write your PDFs like you are creating a site using Bootstrap. A Row may have many Cols, and a Col may have many components. Besides that, pages will be added when content may extrapolate the useful area. You can define a header which will be added always when a new page appear, in this case, a header may have many rows, lines or tablelist.
Maroto v2.4.4 is here! Try out:
- Installation with
go get:
go get github.com/johnfercher/maroto/[email protected]
- You can see the full
v2documentation here. - The
v1still exists in this branch, and you can see the doc here.

Agent Skills
Maroto ships a set of skills for AI coding agents (Claude, Copilot, Cursor, etc.):
Markdown instruction files that teach an agent how to generate PDFs with maroto — setup, config,
layout, components, tables and testing — with every default and pitfall spelled out. The files work
together as one package: copy the whole skills/maroto-pdf/ folder into your project and
point your agent at its entry file, generation.md. Full description on the
docs site.
Contributing
If you are an AI agent/LLM working on this repository, read AGENTS.md first and follow the standards defined in .github/skills.
| Command | Description | Dependencies |
|---|---|---|
make build |
Build project | go |
make test |
Run unit tests | go |
make fmt |
Format files | go (runs gofumpt/goimports via tools/go.mod) |
make lint |
Check files | go (runs golangci-lint via tools/go.mod) |
make dod |
(Definition of Done) Format files and check files | Same as make build, make test, make fmt, make lint and make codecov |
make install |
Install all dependencies and the pre-commit hook | go and npm (for docsify-cli) |
make examples |
Run all examples | go |
make mocks |
Generate mocks | go (runs mockery via tools/go.mod) |
make docs |
Run docsify docs server local | docsify |
make godoc |
Run godoc server local | go (runs godoc via tools/go.mod) |
make install-hooks |
Point git at .githooks so make dod runs on every commit |
git |
make codecov |
Warn about functions with 0% test coverage (never fails) | go |
goimports, gofumpt, golangci-lint, mockery, and godoc are versioned tool dependencies
declared in tools/go.mod, a separate module so their transitive dependencies
never end up in the main go.sum. See contribution.md
for details.
make install (or make install-hooks on its own) configures a pre-commit git hook, tracked at
.githooks/pre-commit, that runs make dod before every commit and blocks
it if build, test, fmt, or lint fail.
Stargazers over time
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,903 starspublic-apis/public-apis
A collective list of free APIs
497,142 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
442,158 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,173 stars