Go PDF文件操作

目录

介绍

[安装 gofpdf](#安装 gofpdf)

API

代码示例

结果展示


介绍

gofpdf 是一个在 Go 语言中用于生成 PDF 文档的库。

安装 gofpdf

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

bash 复制代码
	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")

代码示例

注意:图片需要自行准备否则运行不起来!!!

Go 复制代码
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!")
}

结果展示

相关推荐
岁忧33 分钟前
(LeetCode 面试经典 150 题) 169. 多数元素(哈希表 || 二分查找)
java·c++·算法·leetcode·go·散列表
丘山子1 小时前
了解 Go Channel
后端·面试·go
mCell1 小时前
密码校验与攻击面:不再“裸奔”的防线
后端·安全·go
白一梓2 小时前
Cursor 下配置 golang
go
DemonAvenger3 小时前
Go高并发场景下内存管理最佳实践
性能优化·架构·go
漫步企鹅4 小时前
【蓝牙】手机连接Linux系统蓝牙配对,Linux Qt5分享PDF到手机
linux·qt·智能手机·pdf·蓝牙分享
一个小浪吴啊4 小时前
Java使用itext pdf生成PDF文档
java·python·pdf·itext·itextpdf
mxpan4 小时前
VC++ 与 Golang 的协作:实现 HTTP 文件传输服务
c++·go·mfc
程序员爱钓鱼5 小时前
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
后端·google·go
音乐节门票9 小时前
教师办工专用 资源包|课件+手抄报+PPT模板+常用表格 PDF格式93GB
pdf