Unity使用iTextSharp导出PDF-02基础结构及设置中文字体
基础结构
1.创建一个Document对象
2.使用PdfWriter创建PDF文档
3.打开文档
4.添加内容,调用文档Add方法添加内容时,内容写入到输出流中
5.关闭文档
using UnityEngine;
using iTextSharp.text;
using System.IO;
using iTextSharp.text.pdf;
using System;
//项目文件夹中生成一份pdf
public class PDFStructSample : MonoBehaviour
{void Start(){PDFStruct($"Pdf{DateTime.Now.ToString("yyyyMMddHHmmss")}.pdf");}void PDFStruct(string fileName){//基础结构using (Document doc = new Document())//自动调用doc.Close()方法{try{//创建pdf文档PdfWriter.GetInstance(doc, new FileStream(fileName, FileMode.Create)); //打开pdf文档doc.Open();//pdf中显示一行文字:Hello PDF!doc.Add(new Paragraph("Hello PDF!"));}catch (IOException e){Debug.Log("IO异常" + e.Message);}catch (DocumentException e){Debug.Log("文档异常" + e.Message);}}}
}
设置pdf页面属性
页面大小,背景颜色,页边距。
使用无参数构造函数创建文档对象时,页面大小为A4,上下左右页边距为36像素,背景色为白色,应用于所有页面。
可使用有参数构造函数进行设置。
例如:Document doc = new Document(PageSize.A4, 40f, 40f, 36f, 36f);
参数1是内置的页面,类型为Rectangle,根据需要可创建对象,自定义页面。
Rectangle可设置页面大小,背景颜色。
页面尺寸单位是像素,页面默认dpi是72,1英寸=72像素,1英寸=2.54厘米
设置中文字体
iTextSharp默认使用的是英文字体,没有中文字体。
开源字体:思源黑体体ttf格式,可在Github上查找
Pal3love/Source-Han-TrueType
- 加载字体,创建BaseFont
- 创建Font对象
- 创建文本对象的时候可设置字体
- Font对象可设置字体颜色,风格,大小等属性。
StreamingAssetsPath文件夹存放了思源字体Bold
依据文件路径,创建BaseFont对象,创建Font对象
BaseFont.CreateFont(boldFontFilePath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
参数1:字体路径
参数2:字体编码,IDENTITY_H表示横向文字,使用Unicode编码。
参数3:字体嵌入PDF中,避免电脑不存在该字体。
string FontDirectory => UnityEngine.Application.streamingAssetsPath + "/Fonts/";string boldFontFilePath => FontDirectory + "SourceHanSansCN-Bold.ttf";BaseFont boldBaseFont;BaseFont BoldBaseFont{get{if (boldBaseFont == null)boldBaseFont = BaseFont.CreateFont(boldFontFilePath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);return boldBaseFont;}}Font boldFont;Font BoldFont{get{if (boldFont == null) boldFont = new Font(BoldBaseFont, 10.5f); return boldFont;}}
相关文章:
Unity使用iTextSharp导出PDF-02基础结构及设置中文字体
基础结构 1.创建一个Document对象 2.使用PdfWriter创建PDF文档 3.打开文档 4.添加内容,调用文档Add方法添加内容时,内容写入到输出流中 5.关闭文档 using UnityEngine; using iTextSharp.text; using System.IO; using iTextSharp.text.pdf; using Sys…...
Web第二次作业_补充完小鹅通首页(静态)
目录 题目 index css style 解题 技术优势 html css 运营服务 html css 小鹅通 html css 咨询 html css 友情链接、公司信息 html css 效果展示 技术优势 运营服务 小鹅通 咨询 友情链接、公司信息 题目 index <!DOCTYPE html> <html lang…...
碳纤维复合材料制造的六西格玛管理实践:破解高端制造良率困局的实战密码
碳纤维复合材料制造的六西格玛管理实践:破解高端制造良率困局的实战密码 在全球碳中和与高端制造升级的双重驱动下,碳纤维复合材料行业正经历前爆发式增长。航空航天、新能源汽车、风电叶片等领域对碳纤维产品的性能稳定性提出近乎苛刻的要求࿰…...
在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.20.2
文章目录 1. 安装 nvm(如果还没有安装的话)2. 加载 nvm 配置3. 列出特定系列的 Node.js 版本(远程):4. 安装 Node.js 16.20.25. 使用指定版本的 Node.js6. 验证安装 在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.…...
tenda路由器WriteFacMac存在远程命令执行漏洞(CVE-2024-10697)
一、漏洞简介 tenda路由器WriteFacMac存在远程命令执行漏洞 二、漏洞影响 tenda路由器三、网络测绘: fofa: title"Tenda | LOGIN"四、复现过程 POC 1 GET /goform/WriteFacMac?macls%20%3E/webroot/1.txt HTTP/1.1 Accept: text/html,application/…...
【NLP 21、实践 ③ 全切分函数切分句子】
当无数个自己离去,我便日益坦然 —— 25.2.9 一、jieba分词器 Jieba 是一款优秀的 Python 中文分词库,它支持多种分词模式,其中全切分方式会将句子中所有可能的词语都扫描出来。 1.原理 全切分方式会找出句子中所有可能的词语组合。对于一…...
晶闸管主要参数分析与损耗计算
1. 主要参数 断态正向可重复峰值电压 :是晶闸管在不损坏的情况下能够承受的正向最大阻断电压。断态正向不可重复峰值电压 :是晶闸管只有一次可以超过的正向最大阻断电压,一旦晶闸管超过此值就会损坏,一般情况下 反向可重复峰值电压 :是指晶闸管在不损坏的情况下能够承受的…...
【Stable Diffusion部署至Google Colab】
Google Colab 中快速搭建带 GPU 加速的 Stable Diffusion WebUI from google.colab import drive drive.mount(/content/drive) !mkdir /content/drive/MyDrive/sd-webui-files !pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index…...
mongoTemplate获取某列最大值
首先,MongoDB中获取某列的最大值通常是通过聚合框架中的$group和$max操作符来完成的。那在Spring Data中,应该怎么构建这个聚合查询呢? 首先,可能需要创建一个Aggregation对象,里面包含分组和求最大值的步骤。比如&…...
基于Java的分布式系统架构设计与实现
Java在大数据处理中的应用:基于Java的分布式系统架构设计与实现 随着大数据时代的到来,数据处理的规模和复杂性不断增加。为了高效处理海量数据,分布式系统成为了必不可少的架构之一。而Java,凭借其平台独立性、丰富的生态系统以…...
独立开发日报:从AI到本地服务,5个新颖项目的启发
今天在Hacker News上看到几个特别有意思的项目,它们都找到了不同的切入点:有的用AI解决创意问题,有的深耕本地服务,有的则回归技术本质。一起来看看这些项目背后的思路。 1. AI涂色页面生成器 - 创意与AI的完美结合 这是一个基于…...
找单独的数
问题描述 在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。 要求: 设…...
记使用AScript自动化操作ios苹果手机
公司业务需要自动化操作手机,本来以为很困难,没想到使用AScript工具出乎意料的简单,但是还有很多坑存在,写个博客记录一下。 工具信息: 手机:iphone7 系统版本:ios15 AScript官方文档链接&a…...
Android Studio集成讯飞SDK过程中在配置Project的时候有感
在配置讯飞的语音识别SDK(流式版)时候,跟着写了两个Demo,一个是YuYinTestDemo01,另一个是02,demo01比较简单,实现功能图象也比较简陋,没用讯飞SDK提供的图片,也就是没用到…...
[LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别
一、提示调整(Prompt Tuning) Prompt Tuning是一种通过改变输入提示语(input prompt)以获得更优模型效果的技术。举个例子,如果我们想将一条英语句子翻译成德语,可以采用多种不同的方式向模型提问,如下图所示…...
Docker上安装Zabbix-server-mysql报错
创建新的zabbix server (mysql)容易,最后一条日志报错 cannot usedatabase"zabbix": its "users" table is empty (is this the Zabbix proxy database?) 往前还有一条关键报错信息 ERROR 1153 (08S01): Got a packe…...
c#展示网页并获取网页上触发按钮的值进行系统业务逻辑处理
日前项目上遇到需要调用一个第三方的监控接口,给对方参数后,会返回一个url地址,我方系统需要根据用户在网页上点击的不同按钮,要求如下:在打开违规提醒窗口时,需要注册Callback方法(含一个字符串…...
Flappy Bird开发学习记录
概述 为了了解一下Unity的开发过程,或者说感受?先搞简单的练练手。 工具 Unity:2022.3.51f1c1 visual studio 2022 开发过程 项目基本设置 新建2d项目,游戏画面设置为1080*1920(9:16)。 图片素材设…...
SDKMAN! 的英文全称是 Software Development Kit Manager(软件开发工具包管理器)
文章目录 SDKMAN! 的核心功能SDKMAN! 的常用命令SDKMAN! 的优势总结 SDKMAN! 的英文全称是 Software Development Kit Manager。它是一个用于管理多个软件开发工具(如 Java、Groovy、Scala、Kotlin 等)版本的工具。SDKMAN! 提供了一个简单的方式来安装、…...
?.、??、||分别是什么,又有哪些区别???
在 JavaScript 中,?.、?? 和 || 是三种不同的操作符。 1、?.:可选链操作符 ?. 是一个可选链操作符,用于安全地访问嵌套属性,而不用担心中间的某个属性可能为 null 或 undefined,从而避免运行时错误。 const use…...
7个国内能打开的AI绘画网站!新手福音!
以下是我收集的国内能打开的AI绘画网站。 1、6pen 网址:https://6pen.art/ 2、文心大模型 网址:https://wenxin.baidu.com/moduleApi/ernieVilg 3、Draft 网址:https://draft.art/ai- art/drawing 4、nightcafe 网址:https:/…...
JavaWeb学习-Mybatis(增删改查)
(一)Mybatis入门程序 1.创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包。(项目工程创建完成后,自动在pom.xml文件中,导入Mybatis依赖和MySQL驱动依赖) <dependencies> <!-- mybatis起步依赖 --> <dependency> …...
C/C++面试高频题解析与解题思路(附答案)
一、基础语法与核心概念 指针与引用的区别? 问题:指针和引用在初始化、空值、操作方式上的差异是什么? 解析: 引用必须初始化且不能指向空值,而指针可初始化为空(nullptr)。 引用是变量的别名…...
使用Java爬虫获取京东商品评论API接口(JD.item_review)数据
一、引言 在电商领域,商品评论是用户决策的重要参考依据,也是商家优化产品和服务的重要数据来源。京东作为国内领先的电商平台,提供了丰富的API接口供开发者使用,其中JD.item_review接口可以获取商品的评论数据。通过这些数据&am…...
vscode插件Remote - SSH使用教程
Remote - SSH 是一款非常实用的 Visual Studio Code (VSCode) 扩展插件,它允许开发者通过SSH连接到远程服务器,并像在本地一样进行代码编辑和调试。这意味着你可以直接在VS Code中打开位于远程机器上的文件夹,并利用本地安装的VS Code功能,如语法高亮、智能感知、Git集成等…...
【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...
deepseek的CoT优势、两阶段训练的有效性学习笔记
文章目录 1 DeepSeek的CoT思维链的优势1.2 open-r1的CoT训练数据1.3 ReAct任务与CoT任务适用场景 2 AI推理方向:deepseek与deepmind的两条路线的差异2.1 PRM与ORM的两大学派分支的差异2.2 DeepSeek-R1的两阶段训练概述 1 DeepSeek的CoT思维链的优势 DeepSeek跟之前…...
MobaXterm的图形化界面支持:原理与分辨率问题解决
1. 概述 MobaXterm 是一款功能强大的远程访问工具,支持SSH、RDP、X11、VNC等多种协议,并内置了强大的图形界面支持,让用户能够在远程操作Linux/Unix系统时,享受到类似本地桌面的流畅体验。 与传统的SSH客户端不同,Mo…...
算法很美笔记(Java)——树
性质 树 上面的性质因为两个结点由一条边连成 结点数目越多,算法复杂度越高 二叉树 结构 层次遍历 利用队列,弹一个,加N个(队列里弹出一个元素,就把这个元素的所有孩子加进去) 具体来说:指…...
百度 API 教程 001:显示地图并添加控件
目录 01、基本使用 前期准备 显示地图 开启鼠标滚轮缩放地图 02、添加地图控件 添加标准地图控件 添加多个控件 网址:地图 JS API | 百度地图API SDK 01、基本使用 前期准备 注册百度账号 申请成为开发者 获取密钥:控制台 | 百度地图开放平台…...
