1 JetBrains Ai assistant 编程工具让你的工作效率翻倍
2 Extra Icons:JetBrains IDE的图标增强神器
3 IDEA插件推荐-SequenceDiagram,自动生成时序图
4 BashSupport Pro 这个ides插件主要是用来干嘛的 ?
5 IDEA必装的插件:Spring Boot Helper的使用与功能特点
6 Ai assistant ,又是一个写代码神器
7 Cursor 设备ID修改器,你的Cursor又可以继续试用了
使用 Go 语言生成样式美观的 PDF 文件是一个常见的需求,尤其是在报告生成、发票、合同等场景中。
幸运的是,Go 语言有几个强大的库,可以帮助开发者快速生成美观的 PDF 文件。
最常用的库之一是 github.com/jung-kurt/gofpdf
,它提供了丰富的 API 来创建各种格式的 PDF 文件。
gofpdf
首先,你需要安装 gofpdf
库。可以使用 go get
来安装它:
go get -u github.com/jung-kurt/gofpdf
gofpdf
生成 PDFgofpdf
提供了一个简单的 API 来生成 PDF 文件。你可以定义页面的尺寸、字体、颜色、边距等,还可以插入文本、图片、表格等内容。
package main
import (
"github.com/jung-kurt/gofpdf"
"os"
)
func main() {
// 创建一个新的 PDF 对象
pdf := gofpdf.New("P", "mm", "A4", "") // P: 纵向,mm: 毫米单位,A4: 页面大小
// 添加一页
pdf.AddPage()
// 设置字体
pdf.SetFont("Arial", "B", 16)
// 写入标题
pdf.Cell(40, 10, "Hello, Go PDF!")
// 输出到文件
err := pdf.OutputFileAndClose("output.pdf")
if err != nil {
panic(err)
}
}
你可以设置不同的字体、大小、颜色等。
package main
import (
"github.com/jung-kurt/gofpdf"
"os"
)
func main() {
pdf := gofpdf.New("P", "mm", "A4", "")
// 添加一页
pdf.AddPage()
// 设置字体为 Arial,常规样式,大小为 14
pdf.SetFont("Arial", "", 14)
// 设置字体颜色为蓝色
pdf.SetTextColor(0, 0, 255)
// 写入文本
pdf.Cell(40, 10, "This is a blue text.")
// 设置字体为 Times New Roman,粗体,大小为 12
pdf.SetFont("Times", "B", 12)
pdf.SetTextColor(255, 0, 0) // 红色
pdf.Ln(10)
pdf.Cell(40, 10, "This is a red bold Times font text.")
// 输出 PDF 到文件
err := pdf.OutputFileAndClose("styled_output.pdf")
if err != nil {
panic(err)
}
}
你还可以在 PDF 中插入图片。gofpdf
支持 JPEG、PNG 和 GIF 格式的图片。
package main
import (
"github.com/jung-kurt/gofpdf"
)
func main() {
pdf := gofpdf.New("P", "mm", "A4", "")
// 添加一页
pdf.AddPage()
// 插入图片
// 参数: 图片文件路径, x 坐标, y 坐标, 宽度, 高度
pdf.Image("example.jpg", 10, 10, 50, 50)
// 输出到文件
err := pdf.OutputFileAndClose("image_output.pdf")
if err != nil {
panic(err)
}
}
gofpdf
也支持创建表格,以下是一个简单的表格生成示例:
package main
import (
"github.com/jung-kurt/gofpdf"
)
func createTable(pdf *gofpdf.Fpdf) {
// 设置字体
pdf.SetFont("Arial", "B", 12)
// 表头
headers := []string{"ID", "Name", "Age"}
for _, header := range headers {
pdf.Cell(40, 10, header)
}
pdf.Ln(10) // 换行
// 表格内容
data := [][]string{
{"1", "Alice", "23"},
{"2", "Bob", "30"},
{"3", "Charlie", "25"},
}
for _, row := range data {
for _, cell := range row {
pdf.Cell(40, 10, cell)
}
pdf.Ln(10) // 换行
}
}
func main() {
// 创建 PDF 对象
pdf := gofpdf.New("P", "mm", "A4", "")
// 添加一页
pdf.AddPage()
// 创建表格
createTable(pdf)
// 输出到文件
err := pdf.OutputFileAndClose("table_output.pdf")
if err != nil {
panic(err)
}
}
在多页文档中,你可能希望添加页脚或页码。可以通过自定义函数来实现这一点。
package main
import (
"github.com/jung-kurt/gofpdf"
)
func addFooter(pdf *gofpdf.Fpdf) {
// 设置字体
pdf.SetFont("Arial", "I", 8)
// 设置位置
pdf.SetY(-15) // 距离页面底部 15mm
// 页脚内容
pdf.Cell(0, 10, "Page "+strconv.Itoa(pdf.PageNo()), 0, 0, "C")
}
func main() {
pdf := gofpdf.New("P", "mm", "A4", "")
// 添加一页
pdf.AddPage()
// 设置正文内容
pdf.SetFont("Arial", "", 12)
pdf.Cell(40, 10, "This is a PDF with a footer!")
// 添加页脚
addFooter(pdf)
// 输出 PDF
err := pdf.OutputFileAndClose("footer_output.pdf")
if err != nil {
panic(err)
}
}
gofpdf
还支持很多其他功能,比如:
Go 的 gofpdf
库原生不支持中文字符,但你可以通过加载 TTF 字体文件来支持中文字符。
首先,确保你有一个支持中文的 TTF 字体文件(例如,SimHei.ttf
)。
package main
import (
"github.com/jung-kurt/gofpdf"
"log"
)
func main() {
// 创建一个新的 PDF 对象
pdf := gofpdf.New("P", "mm", "A4", "")
// 添加页面
pdf.AddPage()
// 添加中文字体
err := pdf.AddTTFFont("simhei", "./SimHei.ttf")
if err != nil {
log.Fatal(err)
}
// 设置字体
pdf.SetFont("simhei", "", 14)
// 写入中文内容
pdf.Cell(40, 10, "你好,Go PDF!")
// 输出到文件
err = pdf.OutputFileAndClose("chinese_output.pdf")
if err != nil {
log.Fatal(err)
}
}
通过 gofpdf
库,你可以轻松地使用 Go 语言生成美观的 PDF 文件,支持丰富的样式设置、图片、表格、字体等自定义元素。你可以使用它生成报告、发票、合同等各种应用场景中的 PDF 文件。
gofpdf
是一个功能强大的库,能够满足大部分 PDF 生成需求,同时也具有极好的扩展性,可以满足各种业务场景的需求。