当前位置:首页 > 文章列表 > Golang > Go教程 > Golang生成PDF教程:go-pdf库使用指南

Golang生成PDF教程:go-pdf库使用指南

2025-07-29 16:44:28 0浏览 收藏

想要使用 Golang 生成 PDF 文档?本文将为你提供一份详细的教程,教你如何利用 go-pdf 库轻松创建 PDF 文件。首先,我们将介绍 go-pdf 库的安装方法,只需运行 `go get github.com/signintech/gopdf` 即可。然后,我们将逐步讲解如何初始化 PDF 配置,包括设置页面大小为 A4。为了避免中文乱码问题,教程还会指导你如何加载中文字体,例如文泉驿正黑。接下来,我们将学习如何使用 `SetFont` 设置字体和字号,并使用 `Cell` 方法写入文本内容。此外,本文还将介绍如何插入图片,以及如何通过绘制线条和填充文本来模拟表格效果。对于需要处理多页内容的情况,我们将讲解如何使用 `AddPage` 添加新页面,并使用 `SetX` 和 `SetY` 控制页边距。最后,我们将通过 `WritePdf` 方法将生成的 PDF 文件保存到本地。总而言之,通过本教程,你将掌握使用 Golang 和 go-pdf 库生成 PDF 文档的基本方法。

使用Golang生成PDF文档可通过go-pdf库实现,其步骤为:安装库、初始化配置、添加页面、设置字体、写入内容及输出文件。具体流程包括:1. 运行go get github.com/signintech/gopdf安装库;2. 初始化并设置页面大小为A4;3. 添加页面并通过AddTTFFont加载中文字体避免乱码;4. 使用SetFont设置字体和字号,通过Cell写入文本;5. 插入图片用Image方法指定路径和坐标;6. 表格效果通过MoveTo和LineTo画线结合Cell模拟实现;7. 多页处理调用AddPage,页边距控制用SetX或SetY设定坐标,最终通过WritePdf保存文件。

如何用Golang生成PDF文档 使用go-pdf库创建PDF文件

用Golang生成PDF文档,其实并不复杂。go-pdf 是一个轻量级的库,适合用来生成简单的 PDF 文件,比如发票、报告或者导出内容为 PDF 格式。

如何用Golang生成PDF文档 使用go-pdf库创建PDF文件

安装 go-pdf 库

在开始之前,你需要先安装 go-pdf 包。打开终端运行:

go get github.com/signintech/gopdf

这个包不需要额外依赖,直接引入就可以用了。

如何用Golang生成PDF文档 使用go-pdf库创建PDF文件

创建一个基础 PDF 文件

使用 go-pdf 创建 PDF 的流程比较简单,主要步骤包括初始化、设置字体、添加页面、写入内容等。

示例代码如下:

如何用Golang生成PDF文档 使用go-pdf库创建PDF文件
package main

import (
    "github.com/signintech/gopdf"
)

func main() {
    pdf := gopdf.GoPdf{}
    pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4}) // 设置 A4 纸张大小
    pdf.AddPage() // 添加一页
    err := pdf.AddTTFFont("wqy", "WenQuanYiZenHei.ttf") // 添加中文字体
    if err != nil {
        panic(err)
    }
    pdf.SetFont("wqy", "", 14) // 设置字体和字号
    pdf.Cell(nil, "你好,世界!") // 写入文本
    pdf.WritePdf("hello.pdf") // 输出到文件
}

几点需要注意:

  • 如果你用的是中文,必须加载中文字体(如文泉驿正黑),否则会乱码。
  • Cell 方法用于写入一段文本,还可以设置宽度、高度等参数。
  • 页面尺寸可以是 A4、Letter 或者自定义。

添加图片和表格内容

除了文本,你可能还需要插入图片或者做一些简单的表格样式。

插入图片

pdf.Image("logo.png", 50, 50, nil) // 在指定位置插入图片

支持 PNG 和 JPEG 格式,注意路径要正确。

表格效果模拟

go-pdf 没有内置的表格组件,但可以通过画线 + 文本组合来实现简单的表格:

  • 使用 MoveToLineTo 方法绘制线条
  • 每个单元格用 Cell 填充内容

例如:

pdf.MoveTo(50, 100)
pdf.LineTo(200, 100)
pdf.Stroke()

这样可以画一条横线,配合坐标控制,就能做出表格的边框了。


处理页边距与多页内容

如果你的内容较多,需要分页处理,可以在合适的位置调用 AddPage() 方法。

页边距方面,你可以自己设定起始坐标。比如从左边距 50 开始写内容:

pdf.SetX(50)

或者设置当前行的 Y 坐标:

pdf.SetY(150)

也可以封装一个函数,自动计算下一行的位置。


基本上就这些。go-pdf 功能不算特别强大,但胜在简单易用,适合做数据导出类的 PDF 生成任务。如果需要更复杂的布局,可能要考虑其他库或工具链,比如 wkhtmltopdf 结合 HTML 渲染。

今天关于《Golang生成PDF教程:go-pdf库使用指南》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

CSS表单错误样式优化技巧CSS表单错误样式优化技巧
上一篇
CSS表单错误样式优化技巧
Golang中介者模式解析与解耦作用
下一篇
Golang中介者模式解析与解耦作用
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ChatExcel酷表:告别Excel难题,北大团队AI助手助您轻松处理数据
    ChatExcel酷表
    ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
    3187次使用
  • Any绘本:开源免费AI绘本创作工具深度解析
    Any绘本
    探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
    3399次使用
  • 可赞AI:AI驱动办公可视化智能工具,一键高效生成文档图表脑图
    可赞AI
    可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
    3430次使用
  • 星月写作:AI网文创作神器,助力爆款小说速成
    星月写作
    星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
    4536次使用
  • MagicLight.ai:叙事驱动AI动画视频创作平台 | 高效生成专业级故事动画
    MagicLight
    MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
    3808次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码