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.
- Installation with
go get:
go get github.com/johnfercher/maroto/v2@v2.4.1- You can see the full
v2documentation here. - The
v1still exists in this branch, and you can see the doc here.
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.

