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

结果展示

相关推荐
一只小白菜~1 小时前
web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
前端·javascript·pdf·windowopen预览pdf
一点一木12 小时前
WebAssembly:Go 如何优化前端性能
前端·go·webassembly
流形填表16 小时前
pdf的统计图表数据提取;图表转excel
pdf·excel
harmful_sheep21 小时前
Java操作PDF:一键生成文件,插入文字、选项、签名及公章
pdf
BillDev1 天前
SobarQube实现PDF报告导出
pdf·sonarqube
落落鱼20131 天前
TP6将HTML转换为PDF文件,非法UTF-8编码和中文乱码问题
前端·pdf·html
IT技术分享社区1 天前
电脑软件:推荐一款非常好用的PDF编辑、拆分、合并、对比工具
pdf·微软技术·电脑技巧·办公
无敌小肥0071 天前
Springboot 整合 itext 实现PDF文件合并,识别图片则转成PDF拼接
spring boot·后端·pdf
悲伤小可乐1 天前
10款PDF合并工具的使用体验与推荐!!!
经验分享·其他·pdf·音视频·学习方法
爱健身的小刘同学1 天前
H5移动端预览PDF方法
前端·pdf·html5