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

结果展示

相关推荐
CHANG_THE_WORLD1 天前
PDFium导出pdf 图像
开发语言·c++·pdf
momo_al1 天前
Umi-OCR制作双层PDF
pdf·ocr
励志成为美貌才华为一体的女子1 天前
pdf解析工具---Miner-u 本地部署记录
学习·pdf
reasonsummer1 天前
【办公类-115-02】20251018信息员每周通讯上传之文字稿整理(PDF转docx没有成功)
python·pdf
top_designer1 天前
告别“静态”VI手册:InDesign与AE打造可交互的动态品牌规范
设计模式·pdf·交互·vi·工作流·after effects·indesign
_码力全开_1 天前
P1005 [NOIP 2007 提高组] 矩阵取数游戏
java·c语言·c++·python·算法·矩阵·go
程序员爱钓鱼1 天前
Python编程实战 · 基础入门篇 | Python程序的运行方式
后端·go
2501_929382652 天前
MobiOffice解锁高级功能版 v15.9.57971 安卓手机doc, docx ppt, .pptx pdf办公软件
智能手机·pdf·powerpoint·wps
CodeCraft Studio2 天前
国产化PDF处理控件Spire.PDF教程:如何在 C# 中从 HTML 和 PDF 模板生成 PDF
pdf·c#·html·.net·spire.pdf·pdf文档开发·html创建模板pdf
光头闪亮亮2 天前
gozxing库-对图片中多个二维码进行识别的完整示例教程
go