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.pswp.cn/news/895452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895452.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Navicat導入海量Excel數據到數據庫(簡易介紹)

目錄 前言正文 前言 此處主要作為科普帖進行記錄 原先Java處理海量數據的導入時,由于接口超時,數據處理不過來,后續轉為Navicat Navicat 是一款功能強大的數據庫管理工具,支持多種數據庫系統(如 MySQL、PostgreSQL、…

文化財經t8優質短線期貨交易量化模型源碼

// 參數設置 BOLL_PERIOD : 20; // 布林帶周期 RSI_PERIOD : 14; // RSI 周期 OVERSOLD : 30; // 超賣線 OVERBOUGHT : 70; // 超買線 // 計算布林帶 MID : MA(CLOSE, BOLL_PERIOD); UPPER : MID 2 * STD(CLOSE, BOLL_PERIOD); LOWER : MID - 2 * STD(CLOSE,…

[AI]Mac本地部署Deepseek R1模型 — — 保姆級教程

[AI]Mac本地部署DeepSeek R1模型 — — 保姆級教程 DeepSeek R1是中國AI初創公司深度求索(DeepSeek)推出大模型DeepSeek-R1。 作為一款開源模型,R1在數學、代碼、自然語言推理等任務上的性能能夠比肩OpenAI o1模型正式版,并采用MI…

【UE5】PeerStream像素流部署

視頻教程 https://www.bilibili.com/video/BV1GhiuecEpK?spm_id_from333.788.videopod.sections&vd_source02dd8acc3a83a728e375ff61f1ebe725步驟 下載PeerStream代碼 代碼結構和項目如圖 github地址:https://github.com/inveta/PeerStreamEnterprise下載node node 對應…

老牌系統工具箱,現在還能打!

今天給大家分享一款超實用的電腦軟硬件檢測工具,雖然它是一款比較“資深”的軟件,但依然非常好用,完全能滿足我們的日常需求。 電腦軟硬件維護檢測工具 功能強大易用 這款軟件非常貼心,完全不需要安裝,直接打開就能用…

java商城解決方案

數字化時代,電子商務已成為企業拓展市場的重要渠道。對于想要建立在線商店的企業來說,選擇正確的技術堆棧至關重要。 Java作為一種成熟且廣泛使用的編程語言,為構建購物中心提供了強大的功能和靈活性。 商城Java源碼:商城開發的核…

軟件的生命周期和需求

什么是軟件的生命周期? 定義(描述) --> 創建 --> 使用 --> 銷毀 (這一整個過程就是事物的生命周期) 生命周期 那么軟件的生命周期又分為哪些呢? 一共分為十步: 可行性研究: 通過分析軟件開發要求,確定軟件項目的性質、目標和規模,得出可行性研究報告,如果可行性研…

QGIS如何下載高程數據

一、準備工作 安裝QGIS軟件 訪問QGIS官網下載最新版本,選擇適合操作系統的安裝包(如Windows 64位)完成安裝。建議使用3.28及以上版本以獲得完整功能支持。 注冊數據平臺賬號 NASA EarthData賬號:訪問EarthData登錄頁面注冊,用于SRTM數據下載。地理空間數據云賬號:訪問www…

【linux學習指南】線程同步與互斥

文章目錄 📝線程互斥🌠 庫函數strncpy🌉進程線程間的互斥相關背景概念🌉互斥量mutex 🌠線程同步🌉條件變量🌉同步概念與競態條件🌉 條件變量函數 🚩總結 📝線…

MySQL索引優化,性能飆升的秘密!

0.前言 假設你經營一家電商平臺,某天用戶突然投訴商品搜索加載時間超過10秒。技術團隊緊急排查,發現一條原本執行0.1秒的查詢語句,在百萬級數據量下竟變成了全表掃描。這時,數據庫索引猶如深夜急診室里的救命儀器——它的存在與否…

基于STM32、HAL庫、HS12864(ST7920,并行接口)C語言程序設計

1、hs12864.h頭文件: #ifndef __HS12864_H #define __HS12864_H #ifdef __cplusplus extern "C" {#endif #include "stm32l4xx_hal.h" // 控制線定義 - 根據實際硬件修改 #define HS12864_RS_GPIO_PORT GPIOC #define HS12864_RS_PIN GPIO_PI…

【C語言】C語言 實踐課題選題系統(源碼+報告+數據文件)【獨一無二】

👉博__主👈:米碼收割機 👉技__能👈:C/Python語言 👉專__注👈:專注主流機器人、人工智能等相關領域的開發、測試技術。 系C語言 實踐課題選題系統(源碼報告數據…

基于SpringBoot的“高考志愿智能推薦系統”的設計與實現(源碼+數據庫+文檔+PPT)

基于SpringBoot的“高考志愿智能推薦系統”的設計與實現(源碼數據庫文檔PPT) 開發語言:Java 數據庫:MySQL 技術:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體結構圖 系統首頁界面 系統注冊頁…

React 低代碼項目:組件設計

React 低代碼項目:組件設計 Date: February 6, 2025 React表單組件 **目標:**使用 Ant Design 表單組件,開發登錄、注冊、搜索功能 內容: 使用 React 表單組件、受控組件使用 Ant Design 表單組件使用 表單組件的校驗和錯誤提…

深入剖析 Vue 的響應式原理:構建高效 Web 應用的基石

深入剖析 Vue 的響應式原理:構建高效 Web 應用的基石 在前端開發的廣闊天地里,Vue.js 憑借其簡潔易用的特性和強大的功能,成為眾多開發者的心頭好。其中,響應式原理作為 Vue 的核心亮點之一,讓數據與視圖之間實現了高…

QCustomplot庫運用

最近需要用到這個庫顯示數據,需要在一個曲線圖4個Y軸共用一個X軸,并且做游標,跟隨鼠標移動,并且實時反饋數據到表格中。記錄一下程序。 customPlot new QCustomPlot(this); customPlot->setBackground(QBrush(QColor(204,204,…

STM32 串口 (DMA + 空閑中斷 + 環形緩沖區)

STM32 串口 (DMA 空閑中斷 環形緩沖區) 1. 基本概念 UART 空閑中斷(IDLE): 當串口 RX 線上 連續一段時間沒有數據接收,USART 外設觸發 空閑中斷。空閑中斷的主要作用是通知數據傳輸完成或當前幀結束。 D…

股指期貨是什么?股指期貨日內拐點有什么特征?

股指期貨是一種金融衍生品,股指期貨日內拐點就是在一天交易過程中,市場走勢發生顯著改變的那個點。 股指期貨是什么? 股指是一個指數,比如上證50指數、滬深300指數、中證500指數以及中證1000指數,這是一堆股票的一個整…

Opensearch/ElasticSearch-ctx查詢內容不全的問題

問題 在OpenSearch中,我希望在action中把一整條log作為報警內容發送出來,但是根據文檔,配置為ctx.results.0.hits.hits.0._source.log,但是發現根本找不到這個值 經過查詢,我發現在返回的ctx中僅存在如下的值 resul…

vue2和vue3插槽slot最通俗易懂的區別理解

在 Vue 的組件通信中,slot(插槽)的編譯優化是一個重要的性能提升點。以下是 Vue2 和 Vue3 在 slot 處理上的差異及優化原理,用更直觀的方式解釋: Vue2 的 Slot 更新機制 想象一個父子組件場景: 父組件&am…