当前位置: 首页 > article >正文

使用 Go 语言生成样式美观的 PDF 文件

文章精选推荐

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 文件。

1. 安装 gofpdf

首先,你需要安装 gofpdf 库。可以使用 go get 来安装它:

go get -u github.com/jung-kurt/gofpdf

2. 使用 gofpdf 生成 PDF

gofpdf 提供了一个简单的 API 来生成 PDF 文件。你可以定义页面的尺寸、字体、颜色、边距等,还可以插入文本、图片、表格等内容。

2.1 创建一个基本的 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)
	}
}

2.2 设置字体和样式

你可以设置不同的字体、大小、颜色等。

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)
	}
}

2.3 添加图片

你还可以在 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)
	}
}

2.4 表格和复杂布局

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)
	}
}

2.5 添加页脚和页码

在多页文档中,你可能希望添加页脚或页码。可以通过自定义函数来实现这一点。

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)
	}
}

2.6 更多样式和布局

gofpdf 还支持很多其他功能,比如:

  • 设置不同的对齐方式(左对齐、居中、右对齐)
  • 设置边框
  • 使用矢量图形(线条、矩形、圆形)
  • 动态内容的生成
  • 多语言支持(如中文,需要设置支持的字体)

2.7 中文支持

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)
	}
}

3. 总结

通过 gofpdf 库,你可以轻松地使用 Go 语言生成美观的 PDF 文件,支持丰富的样式设置、图片、表格、字体等自定义元素。你可以使用它生成报告、发票、合同等各种应用场景中的 PDF 文件。

  • 基础样式:字体、颜色、文本对齐、图片插入。
  • 复杂布局:表格、页脚、页码等。
  • 高级功能:中文支持、矢量图形等。

gofpdf 是一个功能强大的库,能够满足大部分 PDF 生成需求,同时也具有极好的扩展性,可以满足各种业务场景的需求。


http://www.kler.cn/a/511003.html

相关文章:

  • 重温STM32之环境安装
  • 第3章:Python TDD更新测试用例测试Dollar类
  • 庄小焱——2024年博文总结与展望
  • 【Azure 架构师学习笔记】- Azure Function (2) --实操1
  • Net Core微服务入门全纪录(三)——Consul-服务注册与发现(下)
  • 深入内核讲明白Android Binder【二】
  • LeetCode - #187 Swift 实现重复的DNA序列
  • 事务处理系统 (Transaction Processing System, TPS)
  • TCP报文格式与核心机制
  • Pycharm报错:libpng warning: iCCP: known incorrect sRGB profile
  • [手机Linux] 七,NextCloud优化设置
  • 生成模型:生成对抗网络-GAN
  • 数据库高可用方案-07-一致性校验
  • Linux-day06
  • Django SimpleUI 运维系统与云管理平台的常用图标指南
  • git操作(Windows中GitHub)
  • Linux 操作二:文件映射与文件状态
  • 基于Springboot实现旅游网站系统开发
  • CSS笔记01
  • AI 时代的 Prompt 工程入门
  • Redis的安装和配置、基本命令
  • Nginx 集群测试
  • 基于Spring Boot的装饰工程管理系统【附源码】
  • Selenium配合Cookies实现网页免登录
  • (一)afsim第三方库编译
  • 基于IOS快捷指令源码/短信接码分享平台源码 附部署教程