Go PDF文件操作

目录

介绍

安装 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)x1y1: 起点坐标<br>- x2y2: 终点坐标pdf.Line(10, 10, 100, 100)
绘制矩形Rect(x, y, width, height, style)xy: 左上角坐标<br>- widthheight: 矩形宽和高<br>- style: 边框样式pdf.Rect(50, 50, 100, 50, "D")
添加图片Image(imageFile, x, y, width, height, imageType, link, linkStr)imageFile: 图片文件路径<br>- xy: 图片位置<br>- widthheight: 图片尺寸<br>- 其他参数为可选pdf.Image("path/to/image.jpg", 10, 10, 30, 0, false, "", 0, "")
设置文本颜色SetTextColor(r, g, b)rgb: RGB颜色值pdf.SetTextColor(255, 0, 0)
设置绘图颜色SetDrawColor(r, g, b)rgb: RGB颜色值pdf.SetDrawColor(0, 0, 255)
设置填充颜色SetFillColor(r, g, b)rgb: 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!")
}

 结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624826.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

25. K 个一组翻转链表 - 力扣(LeetCode)

基础知识要求&#xff1a; Java&#xff1a;方法、while循环、for循环、if else语句 Python&#xff1a; 方法、while循环、for循环、if else语句 题目&#xff1a; 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个…

【目标检测】YOLOv5|YOLOv8模型QT界面可视化部署

YOLO-Deploy-QT_Interface 最近笔者做了YOLO系列算法的部署工作,现做一个总结。主要工作是做了用于部署YOLOv5和YOLOv8的可视化QT界面,可实现图片、文件夹、视频、摄像头的ONNX与OpenVino部署,具体效果如下: 代码链接:https://github.com/Zency-Sun/YOLO-Deploy-QT_Inte…

深入学习Linux内核之v4l2应用编程(二)

一&#xff0c;用户空间访问v4l2设备步骤 V4L2&#xff08;Video for Linux 2&#xff09;是Linux中关于视频设备的内核驱动&#xff0c;它使得Linux系统能够支持视频设备&#xff0c;如摄像头。对于Camera V4L2的应用编程&#xff0c;一般遵循以下步骤&#xff1a; 1&#x…

【正则表达式】1、元字符的认识与分类

1、元字符的概念 正则表达式的常见功能&#xff0c;分别是校验数据的有效性、查找符合要求的文本以及对文本进行切割和替换等操作。 我想你一定在办公软件&#xff0c;比如 Word、Excel 中用过这个功能。你可以使用查找功能快速定位关注的内容&#xff0c;然后使用替换&#xf…

leetcode-最长公共子序列(二)-103

题目要求 思路 step 1&#xff1a;优先检查特殊情况。 step 2&#xff1a;获取最长公共子序列的长度可以使用动态规划&#xff0c;我们以dp[i][j]dp[i][j]dp[i][j]表示在s1中以iii结尾&#xff0c;s2中以jjj结尾的字符串的最长公共子序列长度。 step 3&#xff1a;遍历两个字…

视频号小店从开店到爆单,最详细的攻略教学,来了!

大家好&#xff0c;我是喷火龙 视频号小店从推出到现在一直备受关注&#xff0c;我的团队已经入局视频号小店一年多了&#xff0c; 可以说&#xff0c;新手做视频号小店采用无货源模式和达人带货的玩法依旧是最合适的。 虽然说这个模式和玩法很多人之前都接触过&#xff0c;…

精准追踪,高效分析——Xinstall应用数据分析平台

在当前的移动互联网时代&#xff0c;App应用的数量与日俱增&#xff0c;如何从这些应用中脱颖而出&#xff0c;成为开发者和广告主们亟待解决的问题。而在这个问题中&#xff0c;数据无疑是一把关键的钥匙。今天&#xff0c;我们要介绍的就是国内专业的App全渠道统计服务商——…

普中STM32F103ZET6开发板让DS0和DS1两个LED同时亮

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.运行效果 一.前言 在这套stm32教程中,只教学了如何亮DS0,而没有教学如何亮DS1。 二.代码 main.c #include "stm32f10x.h"void Syst

Linux下Redis下载及安装教程(实测有效)

一、配置gcc 由于Redis是基于c语言编写的需要安装依赖,需要安装gcc&#xff0c;在Linux系统里需要存在C语言的编译环境&#xff0c;一般的Linux系统安装的时候会自动安装&#xff0c;由于我是最小安装模式&#xff0c;所以我需要自己再另外安装一下。 判断系统是否安装gcc&…

2024年Java程序员的职业发展路径

程序员的职业路径是非常清晰的&#xff0c;但是现实情况下&#xff0c;很多人卡在了高级开发就再也上不去&#xff0c;直到遇到职业发展的危机&#xff0c;比如&#xff1a; 35岁大龄程序员找工作难&#xff0c;国内很多大型互联网公司在招聘要求上&#xff0c;会限制35岁这个年…

PuLID: 图像背景、光线、风格等均保持高度一致图像生成工具,附本地一键包

PuLID是一种无需调优的ID定制方法。PuLID保持了高的ID保真度&#xff0c;同时有效地减少了对原始模型行为的干扰。 只需要提供一张照片&#xff0c;就可以生成高还原度的各种风格的图像。 使用方法&#xff1a;解压一键包&#xff0c;双击一键启动 点击ID图像&#xff08;主…

李国武:确保FMEA实现预期质量目标的方法有哪些?

在现代制造业中&#xff0c;FMEA&#xff08;失效模式与影响分析&#xff09;已经成为一项至关重要的质量管理工具。它通过对产品或过程进行系统的分析&#xff0c;识别潜在的失效模式&#xff0c;评估其影响&#xff0c;并制定相应的预防措施&#xff0c;从而确保产品或过程的…

Nginx 代理 MySQL 实现通过域名连接数据库

文章目录 Nginx 模块介绍Stream 模块配置远程连接 MySQLDataGrip 连接 MySQL Nginx 安装这里不做介绍。域名默认已经解析到服务器公网IP。 Nginx 模块介绍 HTTP 模块&#xff1a; HTTP模块提供了处理HTTP请求的功能&#xff0c;包括反向代理、负载均衡、缓存、HTTP代理等。 例…

Docker下载镜像出现“missing signature key”如何解决?

“missing signature key” 通常与 Docker 配置有关&#xff0c;具体是 Docker 试图验证镜像的签名但未能找到相应的密钥。这种情况可能发生在启用了 Docker Content Trust (DCT) 的环境中&#xff0c;DCT 是一种安全功能&#xff0c;要求所有镜像必须有签名才能拉取。 原因 …

资料同化 | 搭建docker环境-1

Community Gridpoint Statistical Interpolation (GSI) system DTC 是一个分布式设施&#xff0c;NWP 社区可以在这里测试和评估用于研究和操作的新模型和技术。 DTC的目标包括&#xff1a; 链接研究和操作社区 研究成果转化为实际操作的速度 加快改善天气预报 开发和测试有…

独享静态IP:跨境网络新助手

在数字化浪潮席卷全球的今天&#xff0c;互联网已成为人们生活中不可或缺的一部分。而在这个由数据和信息构成的虚拟世界里&#xff0c;IP地址作为每一个网络设备的独特标识&#xff0c;其重要性不言而喻。特别是独享静态IP&#xff0c;它不仅为用户提供了更加稳定、安全的网络…

在虚机VirtualBox7.0.8安装Androidx86_64系统详细步骤要点

最近需要用到安卓系统蓝牙功能做测试&#xff0c;就选择了Virtualboxandroidx86方案&#xff0c;先把系统安装好&#xff0c;后面看是否可以比较好的完成蓝牙功能测试。如果可以的话&#xff0c;我会再发文分享下的&#xff0c;敬请期待。 1.准备材料 &#xff08;1&#xff…

[数据集][目标检测]交通灯检测数据集VOC+YOLO格式2600张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2600 标注数量(xml文件个数)&#xff1a;2600 标注数量(txt文件个数)&#xff1a;2600 标注…

食家巷传统面点积极响应中国品牌日,打造国货潮牌

2024 年中国品牌日活动以“中国品牌&#xff0c;世界共享&#xff1b;国货潮牌&#xff0c;品筑未来”为主题&#xff0c;旨在推动中国品牌的发展和国际化&#xff0c;展示国货潮牌的魅力和创新。食家巷传统面点品牌积极响应活动号召&#xff0c;以实际行动助力中国品牌的崛起。…

PyQt5编写的一个简易图像处理软件

文章目录 1. 简介2. 准备工作3. 主界面设计4. 功能构建5. 总结 1. 简介 通过编写简易图像处理软件&#xff0c;你可以学习如何使用 PyQt5 构建用户界面&#xff0c;以及如何与用户交互。同时&#xff0c;你还可以学习图像处理技术&#xff0c;如图像读取、傅里叶变换、滤波、增…