目录
介绍
安装 gofpdf
API
代码示例
结果展示
介绍
gofpdf
是一个在 Go 语言中用于生成 PDF 文档的库。
安装 gofpdf
首先,你需要安装 gofpdf
库。你可以使用 go get
命令来安装它:
go get github.com/jung-kurt/gofpdf
API
功能 | 函数名 | 参数解释 | 示例 |
---|---|---|---|
创建PDF对象 | gofpdf.New(orientation, unit, size, fontDir) | - orientation : 页面方向("P"为纵向, "L"为横向)<br>- unit : 单位("pt", "mm", "cm", "in")<br>- size : 纸张大小(如"A4")<br>- fontDir : 字体目录(可选) | pdf := gofpdf.New("P", "mm", "A4", "") |
添加页面 | AddPage() | 无参数 | pdf.AddPage() |
设置字体 | SetFont(family, style, size) | - family : 字体名称<br>- style : 字体样式("", "B", "I", "U")<br>- size : 字体大小 | pdf.SetFont("Arial", "B", 16) |
输出文本 | Cell(width, height, txt, border, ln, align, fill, link, linkStr, x, y, res, automaticWidth, autoPageBreak) | - width : 单元格宽度<br>- height : 单元格高度<br>- txt : 文本内容<br>- 其他参数为可选,用于设置边框、换行、对齐方式等 | pdf.Cell(40, 10, "Hello, World!") |
输出多行文本 | MultiCell(width, cellHeight, txt, border, align, fill, ln, x, y, res, automaticWidth, autoPageBreak) | 类似Cell ,但支持多行文本 | pdf.MultiCell(40, 10, "Multiple lines of text", 0, "C") |
绘制线条 | Line(x1, y1, x2, y2) | - x1 , y1 : 起点坐标<br>- x2 , y2 : 终点坐标 | pdf.Line(10, 10, 100, 100) |
绘制矩形 | Rect(x, y, width, height, style) | - x , y : 左上角坐标<br>- width , height : 矩形宽和高<br>- style : 边框样式 | pdf.Rect(50, 50, 100, 50, "D") |
添加图片 | Image(imageFile, x, y, width, height, imageType, link, linkStr) | - imageFile : 图片文件路径<br>- x , y : 图片位置<br>- width , height : 图片尺寸<br>- 其他参数为可选 | pdf.Image("path/to/image.jpg", 10, 10, 30, 0, false, "", 0, "") |
设置文本颜色 | SetTextColor(r, g, b) | - r , g , b : RGB颜色值 | pdf.SetTextColor(255, 0, 0) |
设置绘图颜色 | SetDrawColor(r, g, b) | - r , g , b : RGB颜色值 | pdf.SetDrawColor(0, 0, 255) |
设置填充颜色 | SetFillColor(r, g, b) | - r , g , b : RGB颜色值 | pdf.SetFillColor(255, 255, 0) |
输出文件 | OutputFileAndClose(filename) | - filename : 输出文件名 | err := pdf.OutputFileAndClose("output.pdf") |
代码示例
注意:图片需要自行准备否则运行不起来!!!
package main
import (
"fmt"
"github.com/jung-kurt/gofpdf"
"os"
)
func main() {
// 创建一个新的PDF文档
pdf := gofpdf.New("P", "mm", "A4", "")
// 添加第一页
pdf.AddPage()
// 设置字体和大小
pdf.SetFont("Arial", "", 14)
// 输出文本
pdf.Cell(40, 10, "Hello, World!")
// 添加一些空行
pdf.Ln(10)
// 输出多行文本
txt := "This is a multi-line text example.\nEach line is separated by a newline character."
pdf.MultiCell(100, 5, txt, "1", "J", false)
// 添加一个矩形
pdf.SetDrawColor(255, 0, 0) // 设置线条颜色为红色
pdf.Rect(50, 50, 100, 50, "D") // 画一个红色矩形,带边框("D"表示绘制线条)
// 添加一个填充矩形
pdf.SetFillColor(0, 255, 0) // 设置填充颜色为绿色
pdf.Rect(50, 120, 100, 50, "F") // 画一个绿色矩形,填充("F"表示填充)
// 绘制一条线
pdf.SetDrawColor(0, 0, 255) // 设置线条颜色为蓝色
pdf.Line(10, 200, 200, 200) // 从(10,200)到(200,200)画一条蓝色线
// 添加图片(确保图片路径是正确的)
pdf.Image("E:\\SystemFiles\\Pictures\\go-logo.png", 160, 220, 30, 0, false, "", 0, "")
// 设置文本颜色并输出
pdf.SetTextColor(255, 0, 0) // 设置为红色
pdf.Cell(40, 10, "Text in red color")
// 输出PDF到文件
err := pdf.OutputFileAndClose("example.pdf")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println("PDF file created successfully!")
}