Maroto 是一个开源的 Go 语言库,用于创建 PDF 文档。它的设计灵感来自 Bootstrap,并使用了 gofpdf 库,使得创建 PDF 变得快速且简单。
Maroto 的名字源自巴西葡萄牙语,意为聪明、机智的人。
通过 Maroto,用户可以像使用 Bootstrap 创建网站一样创建 PDF 文档。它采用行和列的布局方式,每一行可以包含多个列,每一列可以包含多个组件。
此外,当内容超出页面的可用区域时,会自动添加新页面,并且可以定义页眉,页眉会在每次新页面出现时自动添加。
功能特点
灵活的网格系统:Maroto 使用 12 单位的网格系统来管理 PDF 文档的布局。页面的宽度被划分为 12 个相等的部分(即“网格空间”),用户可以通过指定列的宽度来控制布局的灵活性和简洁性。
多种组件支持:Maroto 支持多种组件,包括文本、图像、条形码、二维码、矩阵码、签名等。用户可以通过简单的 API 调用将这些组件添加到 PDF 文档中。
内置度量功能:Maroto 内置了度量功能,允许用户在生成 PDF 时进行性能监控和优化。这对于需要生成大量 PDF 文档的应用场景尤为重要。
可测试性:Maroto 提供了良好的单元测试支持,用户可以方便地对生成的 PDF 文档进行测试,确保其符合预期。
高效性能:与 V1 版本相比,Maroto V2 的执行速度至少提高了两倍。这得益于其优化的代码和高效的执行逻辑。
递归行/列支持:Maroto 允许在行和列中嵌套其他行和列,从而实现更复杂的布局。这使得用户可以创建更加灵活和多样化的 PDF 文档。
吸引用户的特点
简单易用:Maroto 的 API 设计简洁明了,用户可以通过几行代码快速生成 PDF 文档。其类似于 Bootstrap 的布局方式使得前端开发者也能轻松上手。
高扩展性:Maroto 支持多种组件和布局方式,用户可以根据需求自由组合,生成各种类型的 PDF 文档。
开源免费:作为一个开源项目,Maroto 完全免费,用户可以自由使用、修改和分发。同时,社区的活跃贡献也使得 Maroto 不断更新和完善。
性能优越:Maroto 的高效性能使得它在处理大量 PDF 文档生成任务时表现出色,适用于各种高性能需求的应用场景。
良好的文档和支持:Maroto 提供了详细的文档和示例代码,用户可以通过阅读文档快速了解和使用该库。同时,GitHub 上的社区支持也为用户提供了丰富的资源和帮助。
快速使用指南
安装 Maroto:
go get github.com/johnfercher/maroto/v2@v2.1.5
创建一个简单的 PDF 文档:
package main
import (
"log"
"github.com/johnfercher/maroto/v2"
"github.com/johnfercher/maroto/v2/pkg/consts"
"github.com/johnfercher/maroto/v2/pkg/props"
)
func main() {
m := maroto.NewMaroto(consts.Portrait, consts.A4)
m.SetPageMargins(10, 10, 10)
m.Row(20, func() {
m.Col(12, func() {
m.Text("Hello, Maroto!", props.Text{
Top: 10,
Size: 20,
Align: consts.Center,
})
})
})
err := m.OutputFileAndClose("example.pdf")
if err != nil {
log.Fatalf("Could not save PDF: %v", err)
}
}运行代码:
go run main.go
以上代码将生成一个包含“Hello, Maroto!”文本的 PDF 文档。通过这种方式,用户可以快速上手 Maroto,并根据需求创建各种复杂的 PDF 文档。
Maroto 的设计理念和功能特点使其成为创建 PDF 文档的强大工具。无论是简单的文本文档,还是复杂的图表和表格,Maroto 都能轻松应对。