当前位置: 首页 > article >正文

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

  1. 加载字体,创建BaseFont
  2. 创建Font对象
  3. 创建文本对象的时候可设置字体
  4. 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;
        }
    }

http://www.kler.cn/a/542896.html

相关文章:

  • 【分布式理论9】分布式协同:分布式系统进程互斥与互斥算法
  • jenkins备份还原配置文件
  • Jenkins+gitee 搭建自动化部署
  • 【Obsidian】当笔记接入AI,Copilot插件推荐
  • 借助 ListWise 提升推荐系统精排效能:技术、案例与优化策略
  • PDF 2.0 的新特性
  • 2月10日QT
  • IGBT的两级关断
  • 线程池-抢票系统性能优化
  • python学opencv|读取图像(五十九)使用cv2.dilate()函数实现图像膨胀处理
  • 【Golang学习之旅】Go + MySQL 数据库操作详解
  • Pandas数据填充(fill)中的那些坑:避免机器学习中的数据泄露
  • react国际化配置react-i18next详解
  • 使用WebUI访问本地Deepseek(Ollama集成Open WebUI)
  • office 365 更新后打不开word问题
  • depcheck检查node.js项目中未使用和缺失依赖的工具
  • 免费在腾讯云Cloud Studio部署DeepSeek-R1大模型
  • encodeURI(),encodeURIComponent()区别
  • AF3 gdt函数解读
  • nginx安装并部署前端项目【包括Linux与Windows系统】
  • 前端性能分析常见内容
  • C语言蓝桥杯1003: [编程入门]密码破译
  • 香港中文大学 Adobe 推出 MotionCanvas:开启用户掌控的电影级图像视频创意之旅。
  • 基于Springboot(Maven项目)——分页
  • 在 debian 12 上安装 mysqlclient 报错
  • 代码随想录--977有序数组的平方