Unity使用iTextSharp导出PDF-04图形

devtools/2025/2/12 6:58:49/

坐标系

pdf文档页面的原点(0,0)在左下角,向上为+y,向右为+x。
文档的PageSize可获取页面的宽高数值
单位:像素

绘制矢量图形

使用PdfContentByte类进行绘制,注意文档打开后才有此对象的实例。

绘制方法

Stroke 绘制轮廓
ClosePathStroke 连接起点和终点并绘制轮廓
Fill 填充但无轮廓
ClosePathFillStroke 封闭 填充 有轮廓

轮廓线设置

SetLineWidth(2f); 轮廓线宽度
SetLineDash(3f, 2f); 轮廓线为虚线,虚线长度为3,间隔为2
SetColorStroke(BaseColor.RED) 轮廓线颜色

封闭图形的填充颜色

SetColorFill(BaseColor.GRAY) 封闭图形的填充颜色

直线

MoveTo设置起点,LineTo设置终点,Storke绘制

var writer = PdfWriter.GetInstance(doc, new FileStream(fileName, FileMode.Create));
doc.Open();
PdfContentByte cb = writer.DirectContent;
PdfContentByte cb = writer.DirectContent;
var width = doc.PageSize.Width;
var height = doc.PageSize.Height;
cb.MoveTo(width / 2, 0);//起点
cb.LineTo(width / 2, height);//终点
cb.Stroke();//绘制

曲线

原理为贝塞尔曲线

cb.MoveTo(200f, 10f); 
cb.CurveTo(150f, 30f, 450f, 70f, 350f, 150f);
cb.Stroke();

三角形

cb.MoveTo(350f, 450f);
cb.LineTo(350f, 600f);
cb.LineTo(500f, 450f);
cb.ClosePathStroke();//最后一个点和起点自动连接

cb.Circle(120f, 250f, 50f);
cb.Stroke();

圆角矩形

cb.RoundRectangle(100f, 500f, 200f, 200f, 20f);
cb.Stroke();

导入图片

支持格式:jpg,png,git等

var writer = PdfWriter.GetInstance(doc, new FileStream(fileName, FileMode.Create));
doc.Open();
Image ima = Image.GetInstance("F:\\图片.png");
ima.Border = Rectangle.BOX;//正方形边框
ima.BorderColor = BaseColor.YELLOW;//边框颜色
ima.BorderWidth = 5f;//边框宽度
ima.SetAbsolutePosition(5f, 5f);//位置
doc.Add(ima);

http://www.ppmy.cn/devtools/158137.html

相关文章

Anything llm Token数理解

Token context window参数解释 1. 定义与范围 Token context window(上下文窗口)参数同时包含输入和输出的token总数限制,表示模型单次交互中能够处理的最大token容量。例如:- GPT-4:典型窗口为32k tokens,…

使用 C++20 Modules 导入 Boost 模块的方法

使用 C20 Modules 导入 Boost 模块的方法 我的项目案例地址:https://github.com/yudaichen/coroutine_blog 引言 C20 引入的 Modules 特性为 C 开发带来了诸多好处,如加快编译速度、减少头文件重复包含等问题。Boost 作为一个广泛使用的 C 库集合&…

(3/100)每日小游戏平台系列

新增一个颜色记忆挑战! 游戏目标 在游戏中,你需要记住系统展示的颜色顺序,并按照相同的顺序点击颜色按钮。如果你点击正确,你将进入下一关,难度会逐步提升。记忆力越强,得分越高! 游戏规则 开始…

C++ ——从C到C++

1、C的学习方法 (1)C知识点概念内容比较多,需要反复复习 (2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深 (3)学好编程要多练习,简…

65【服务器攻击原理讲解】

我们经常可能会听说,某某的服务器被打了,被打死了,这里的打死并不一是指服务器直接死机 服务器有2个决定性参数 1:宽带,宽带越大,能传输的数据就越多 2:CPU,CPU越好能处理的运算…

ffmpeg基本用法

一、用法 ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... 说明: global options:全局选项,应用于整个 FFmpeg 进程,它们通常不受输入或输出部分的限制。 infile options:输入选…

Python 脚本实现数据可视化

使用 Python 脚本实现数据可视化可以通过以下步骤: 一、准备工作 安装必要的库: matplotlib:这是一个广泛使用的 Python 2D 绘图库,可以生成各种静态、动态和交互式的图表。seaborn:建立在 matplotlib 之上&#xff…

Git 与持续集成 / 持续部署(CI/CD)的集成

一、引言 在当今快速发展的软件开发领域,高效的代码管理和持续的交付流程是项目成功的关键因素。Git 作为一款分布式版本控制系统,已经成为了开发者们管理代码的标配工具;而持续集成 / 持续部署(CI/CD)则是一种能够加…