成都企业网站备案流程,太原seo关键词排名优化,建设网站前的需求分析,做国外网站的零售文章精选推荐
1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 #xff1f; 5 IDEA必装的插件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 文件。
1. 安装 gofpdf
首先你需要安装 gofpdf 库。可以使用 go get 来安装它
go get -u github.com/jung-kurt/gofpdf2. 使用 gofpdf 生成 PDF
gofpdf 提供了一个简单的 API 来生成 PDF 文件。你可以定义页面的尺寸、字体、颜色、边距等还可以插入文本、图片、表格等内容。
2.1 创建一个基本的 PDF 示例
package mainimport (github.com/jung-kurt/gofpdfos
)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)}
}2.2 设置字体和样式
你可以设置不同的字体、大小、颜色等。
package mainimport (github.com/jung-kurt/gofpdfos
)func main() {pdf : gofpdf.New(P, mm, A4, )// 添加一页pdf.AddPage()// 设置字体为 Arial常规样式大小为 14pdf.SetFont(Arial, , 14)// 设置字体颜色为蓝色pdf.SetTextColor(0, 0, 255)// 写入文本pdf.Cell(40, 10, This is a blue text.)// 设置字体为 Times New Roman粗体大小为 12pdf.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)}
}2.3 添加图片
你还可以在 PDF 中插入图片。gofpdf 支持 JPEG、PNG 和 GIF 格式的图片。
package mainimport (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)}
}2.4 表格和复杂布局
gofpdf 也支持创建表格以下是一个简单的表格生成示例
package mainimport (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)}
}2.5 添加页脚和页码
在多页文档中你可能希望添加页脚或页码。可以通过自定义函数来实现这一点。
package mainimport (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)// 输出 PDFerr : pdf.OutputFileAndClose(footer_output.pdf)if err ! nil {panic(err)}
}2.6 更多样式和布局
gofpdf 还支持很多其他功能比如
设置不同的对齐方式左对齐、居中、右对齐设置边框使用矢量图形线条、矩形、圆形动态内容的生成多语言支持如中文需要设置支持的字体
2.7 中文支持
Go 的 gofpdf 库原生不支持中文字符但你可以通过加载 TTF 字体文件来支持中文字符。
首先确保你有一个支持中文的 TTF 字体文件例如SimHei.ttf。
package mainimport (github.com/jung-kurt/gofpdflog
)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)}
}3. 总结
通过 gofpdf 库你可以轻松地使用 Go 语言生成美观的 PDF 文件支持丰富的样式设置、图片、表格、字体等自定义元素。你可以使用它生成报告、发票、合同等各种应用场景中的 PDF 文件。
基础样式字体、颜色、文本对齐、图片插入。复杂布局表格、页脚、页码等。高级功能中文支持、矢量图形等。
gofpdf 是一个功能强大的库能够满足大部分 PDF 生成需求同时也具有极好的扩展性可以满足各种业务场景的需求。