使用C#實(shí)現(xiàn)TXT文本轉(zhuǎn)換為PDF
在日常開(kāi)發(fā)和辦公場(chǎng)景中,將純文本(TXT)格式轉(zhuǎn)換為 PDF 格式是常見(jiàn)需求。PDF 格式具備跨平臺(tái)、格式穩(wěn)定、不易篡改的特性,而 TXT 則更側(cè)重內(nèi)容存儲(chǔ),二者的格式轉(zhuǎn)換能兼顧內(nèi)容可讀性與傳播規(guī)范性。本文將介紹如何通過(guò) C# 和 .NET 免費(fèi)庫(kù)實(shí)現(xiàn) TXT 到 PDF 的轉(zhuǎn)換。
一、環(huán)境準(zhǔn)備
1. 核心庫(kù)介紹
Free Spire.PDF for .NET 是一款免費(fèi)的 PDF 操作類庫(kù),提供了 PDF 文檔創(chuàng)建、編輯、格式轉(zhuǎn)換等基礎(chǔ)功能。需要注意的是,該免費(fèi)版存在一定限制(如單文檔轉(zhuǎn)換頁(yè)數(shù)上限),但完全滿足 TXT 轉(zhuǎn) PDF 的基礎(chǔ)需求。
2. 環(huán)境配置
- 開(kāi)發(fā)環(huán)境:Visual Studio 或其他 C# IDE;
- 庫(kù)安裝:通過(guò) NuGet 包管理器安裝 Free Spire.PDF,執(zhí)行以下 NuGet 命令:
Install-Package FreeSpire.PDF
二、TXT 轉(zhuǎn) PDF 核心實(shí)現(xiàn)步驟
TXT 純文本轉(zhuǎn) PDF 的核心邏輯可拆解為「讀取 TXT 內(nèi)容→創(chuàng)建 PDF 載體→設(shè)置文本渲染格式→將文本繪制到 PDF→保存 PDF 文件」五個(gè)步驟,以下是完整實(shí)現(xiàn)代碼及分步解析。
1. 完整實(shí)現(xiàn)代碼
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System.IO;
namespace ConvertTextToPdf
{
class Program
{
static void Main(string[] args)
{
try
{
// 1. 讀取TXT文本文件內(nèi)容
string txtFilePath = @"Input.txt";
string textContent = File.ReadAllText(txtFilePath, System.Text.Encoding.UTF8);
// 2. 創(chuàng)建PDF文檔實(shí)例并添加空白頁(yè)面
PdfDocument pdfDocument = new PdfDocument();
PdfPageBase pdfPage = pdfDocument.Pages.Add(); // 默認(rèn)A4頁(yè)面
// 3. 配置PDF文本渲染的字體
PdfTrueTypeFont pdfFont = new PdfTrueTypeFont("宋體", 18f, PdfFontStyle.Bold, true);
// 4. 配置文本布局規(guī)則
PdfTextLayout textLayout = new PdfTextLayout();
textLayout.Break = PdfLayoutBreakType.FitPage; // 內(nèi)容適配頁(yè)面
textLayout.Layout = PdfLayoutType.Paginate; // 內(nèi)容超出時(shí)自動(dòng)分頁(yè)
// 5. 配置文本格式
PdfStringFormat textFormat = new PdfStringFormat();
textFormat.Alignment = PdfTextAlignment.Justify; // 文本兩端對(duì)齊
textFormat.LineSpacing = 20f; // 設(shè)置行間距
// 6. 創(chuàng)建文本渲染組件并綁定格式
PdfTextWidget textWidget = new PdfTextWidget(textContent, pdfFont, PdfBrushes.Black);
textWidget.StringFormat = textFormat;
// 7. 定義文本渲染區(qū)域
RectangleF renderBounds = new RectangleF(
new PointF(10, 25),
new SizeF(pdfPage.Canvas.ClientSize.Width - 20, pdfPage.Canvas.ClientSize.Height - 30)
);
// 8. 將文本繪制到PDF頁(yè)面
textWidget.Draw(pdfPage, renderBounds, textLayout);
// 9. 保存PDF文件
pdfDocument.SaveToFile("TextToPdf.pdf", FileFormat.PDF);
// 釋放資源
pdfDocument.Close();
Console.WriteLine("TXT轉(zhuǎn)PDF成功!");
}
catch (IOException ex)
{
Console.WriteLine("文件操作異常:" + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("轉(zhuǎn)換失?。? + ex.Message);
}
}
}
}
2. 代碼關(guān)鍵解析
(1)讀取 TXT 內(nèi)容
使用 File.ReadAllText 讀取文本文件,建議顯式指定編碼(如UTF-8) —TXT 文件的默認(rèn)編碼可能因系統(tǒng)而異,未指定編碼易導(dǎo)致中文等字符亂碼。
(2)PDF 文檔與頁(yè)面創(chuàng)建PdfDocument 是整個(gè) PDF 文檔的核心實(shí)例,pdfDocument.Pages.Add() 會(huì)創(chuàng)建一個(gè)默認(rèn) A4 尺寸的空白頁(yè)面,也可通過(guò)重載方法自定義頁(yè)面大?。ㄈ?A3、自定義尺寸)。
(3)文本格式與布局配置
PdfTrueTypeFont:定義字體、字號(hào)和樣式;PdfTextLayout:設(shè)置Paginate可實(shí)現(xiàn)「文本超出單頁(yè)時(shí)自動(dòng)新建頁(yè)面」,避免內(nèi)容被截?cái)啵?/li>PdfStringFormat:配置文本對(duì)齊方式(左對(duì)齊、居中、兩端對(duì)齊)和行間距,提升 PDF 可讀性;RectangleF:定義文本在頁(yè)面中的渲染區(qū)域,預(yù)留邊距避免文本緊貼頁(yè)面邊緣。
(4)文本繪制與 PDF 保存PdfTextWidget 是文本渲染的核心組件,通過(guò) Draw 方法將文本繪制到指定頁(yè)面和區(qū)域;最終通過(guò) SaveToFile 保存 PDF 文件,支持指定保存路徑。
本文展示的 C# TXT 文本轉(zhuǎn) PDF 方案,為中小型項(xiàng)目提供了代碼量少,且無(wú)需依賴第三方工具(如Office、WkHtmlToPdf)的實(shí)用解決方案。通過(guò)合理的配置和優(yōu)化,該方案能夠滿足大部分基礎(chǔ)轉(zhuǎn)換需求。
到此這篇關(guān)于使用C#將TXT文本轉(zhuǎn)換為PDF的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)C# TXT文本轉(zhuǎn)為PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于C#代碼實(shí)現(xiàn)九宮格算法橫豎都等于4
這篇文章主要介紹了基于C#代碼實(shí)現(xiàn)九宮格算法橫豎都等于4的相關(guān)資料,需要的朋友可以參考下2016-01-01
C#獲取計(jì)算機(jī)名,IP,MAC信息實(shí)現(xiàn)代碼
利用C#獲取計(jì)算機(jī)名,IP,MAC信息如何實(shí)現(xiàn),一直是網(wǎng)友們的頭疼問(wèn)題,本文整理了一些實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-11-11
深入DropDownList用法的一些學(xué)習(xí)總結(jié)分析
本篇文章是對(duì)DropDownList的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
基于C#實(shí)現(xiàn)獲取Windows所有窗口句柄
在做錄屏或截屏操作時(shí),需要獲取當(dāng)前正在運(yùn)行中的桌面程序句柄,所以這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)獲取Windows所有窗口句柄,需要的可以參考下2023-12-12
Unity實(shí)現(xiàn)引導(dǎo)頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)引導(dǎo)頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
可替代log4j日志的c#簡(jiǎn)單日志類隊(duì)列實(shí)現(xiàn)類代碼分享
簡(jiǎn)單日志類隊(duì)列實(shí)現(xiàn)??砂刺熘茉履甏笮》指钗募???珊?jiǎn)單替代log4j2013-12-12
C#使用TCP協(xié)議實(shí)現(xiàn)數(shù)據(jù)發(fā)送和接受的方法
這篇文章主要介紹了c#使用TCP協(xié)議實(shí)現(xiàn)數(shù)據(jù)發(fā)送和接受,使用TCP協(xié)議實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接受包括客戶端和服務(wù)端兩個(gè)部分,本文通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
C#使用FtpWebRequest與FtpWebResponse完成FTP操作
這篇文章介紹了C#使用FtpWebRequest與FtpWebResponse完成FTP操作的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05

