Unity使用iTextSharp导出PDF-05页面事件

news/2025/2/12 5:09:38/

页面事件相关

  1. 接口:IPdfPageEvent
    定义了页面变化触发的函数
  2. 类:PdfPageEventHelper
    继承接口IPdfPageEvent,函数全部是虚函数,根据需要重写函数。
  3. 属性 PdfWriter.PageEvent
    设置IPdfPageEvent接口对象

页面事件触发时机

  1. OnOpenDocument(PdfWriter writer, Document document)
    触发时机:document.Open() 被调用后,第一页创建之前。
  2. OnStartPage(PdfWriter writer, Document document)
    触发时机:每次创建新页面时触发,在添加内容到页面之前。
  3. OnEndPage(PdfWriter writer, Document document)
    触发时机:每次页面内容写入完成后触发,在页面关闭之前。
  4. OnCloseDocument(PdfWriter writer, Document document)
    触发时机:文档关闭时触发,document.Close() 被调用后。
  5. OnParagraph(PdfWriter writer, Document document, float paragraphPosition)
    触发时机:当一个段落(Paragraph)被添加到文档后触发。
  6. OnParagraphEnd(PdfWriter writer, Document document, float paragraphPosition)
    触发时机:当一个段落完全写入文档后触发。
  7. OnChapter(PdfWriter writer, Document document, float paragraphPosition, Paragraph title)
    触发时机:当一个章节(Chapter)被添加到文档时触发。
  8. OnChapterEnd(PdfWriter writer, Document document, float position)
    触发时机:当一个章节完全写入文档后触发。
  9. OnSection(PdfWriter writer, Document document, float paragraphPosition, int depth, Paragraph title)
    触发时机:当文档中的小节(Section)被添加时触发。
  10. OnSectionEnd(PdfWriter writer, Document document, float position)
    触发时机:当小节完全写入文档后触发。

常用用途

设置页眉,页脚,添加水印等

示例

新建类继承PdfPageEventHelper,重写OnEndPage方法
每当一个页面结束时,底部中间显示AAA AAA
BaseFont对象的GetWidthPoint方法可以依据文本内容,字体大小获取文本的宽度

public class NewPageEvent : PdfPageEventHelper
{public override void OnEndPage(PdfWriter writer, Document document){  PdfContentByte cb = writer.DirectContent;BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, false);var bottomCenterContent = "AAA AAA";cb.BeginText(); cb.SetFontAndSize(bf, 10);cb.SetTextMatrix(document.PageSize.Width / 2 - bf.GetWidthPoint(bottomCenterContent, 10) / 2, 10);//居中显示cb.ShowText(bottomCenterContent);cb.EndText();}
}

新建对象NewPageEvent进行赋值

var writer = PdfWriter.GetInstance(doc, new FileStream(fileName, FileMode.Create));
writer.PageEvent = new NewPageEvent();//赋值 自定义页面事件
doc.Open();
doc.Add(new Paragraph("你好,世界!", BoldFont));

http://www.ppmy.cn/news/1571330.html

相关文章

CodeGeeX4+IDEA辅助开发工具

CodeGeex4IDEA 在当今的软件开发领域,随着项目规模的不断扩大和技术的日益复杂,开发人员面临着越来越大的压力。他们需要在短时间内完成大量的代码编写工作,同时还要确保代码的质量和性能。然而,传统的手工编码方式往往效率低下&…

Linux | 自动化构建 —— make / Makefile

文章目录 自动化构建-make/Makefile一、make 工具概述二、Makefile 基本结构三、 Makefile和make的基本使用3.1最基本的gcc编译:3.2make执行Makefile文件3.3.PHONY伪目标 四、Makefile拓展4.1直接根据文件名编写Makefile4.2变量的使用4.3Makefile的适度扩展语法&…

机器学习中过拟合和欠拟合问题处理方法总结

目录 一、背景二、过拟合(Overfitting)2.1 基本概念2.2 过拟合4个最主要的特征2.3 防止过拟合的11个有效方法 三、欠拟合(Underfitting)3.1 基本概念3.2 欠拟合的4个特征3.3 防止欠拟合的11个有效方法 四、总结五、参考资料 一、背景 在机器学习模型训练…

(篇五)基于PyDracula搭建一个深度学习的软件之融入大华相机

1大华python文件解读 我们正常打开MVviewer会发现这些文件。我的应用场景是PLC给我一个信号,我就触发拍照程序,那么我需要选取哪一个文件作为研究基础呢? 1.1 异步回调byCallBack和手动轮询byGetFrame 异步回调 采用 异步回调 (attachGr…

如何在C++ QT 程序中集成cef3开源浏览器组件去显示网页?

文章目录 1. **准备工作**1.1 下载CEF31.2 配置Qt项目2. **集成CEF3到Qt窗口**2.1 创建Qt窗口容器2.2 初始化CEF33. **处理CEF3消息循环**4. **处理多进程架构**5. **完整代码示例**`main.cpp`6. **常见问题**6.1 黑屏问题6.2 窗口嵌入失败6.3 多进程调试7.**Github源码参考**8…

【课程设计参考】迷宫小游戏 :基于 Python+Pygame+AI算法

一、内容 实现走迷宫 (1)游戏界面显示:迷宫地图、上下左右移动的特效。 (2)动作选择:上下左右键对应于上下左右的移动功能,遇到障碍的处理。 (3)得分统计功能&#xff…

帝国CMS8.0版多访问端支持可选不绑定二级域名

在之前版本的多访问端功能,子访问端需要绑定二级域名才能使用(如手机端:m.xx.com)。所以为了更方便做各种访问端,帝国CMS8.0版多访问端功能新增支持可以选择不绑定二级域名(如手机端:www.xx.com/m/)。要设置可修改配置文件 /e/con…

物理服务器的硬件配置都是由哪些构成的?

物理服务器是有着实体的服务器,拥有着独立的硬件设备,能够为企业存储和处理数据信息,那么,物理服务器的硬件配置都是由哪些构成的呢?下面小编就来为大家具体介绍一下物理服务器的硬件配置吧! 首先&#xff…