在日常開發和辦公場景中,將純文本(TXT)文件轉換為 PDF 格式是一項常見需求。PDF 格式具備跨平台、樣式固定、不易被篡改等特點,而 TXT 格式則更側重於內容的輕量存儲。二者之間的轉換可以兼顧內容的可讀性與文檔的規範性與便攜性。本文將介紹如何通過 C# 和免費的 .NET 類庫實現 TXT 到 PDF 的高效轉換。
一、環境準備
1. 核心庫簡介
Free Spire.PDF for .NET 是一個功能豐富的免費 PDF 操作庫,支持 PDF 文檔的創建、編輯、合併、轉換等基礎功能。免費版本對部分高級功能或處理規模有一定限制(例如單次轉換的頁數上限),但對於常規的 TXT 轉 PDF 任務完全夠用。
2. 環境配置
- 開發環境:Visual Studio 2022 或更高版本,或其他支持 .NET 的 IDE。
- 庫安裝:通過 NuGet 包管理器安裝 FreeSpire.PDF。可在程序包管理器控制枱中執行以下命令:
Install-Package FreeSpire.PDF
二、TXT 轉 PDF 實現步驟
轉換過程可歸納為以下核心步驟:
- 讀取 TXT 文件內容
- 創建 PDF 文檔與頁面
- 設置文本字體與樣式
- 定義文本佈局與格式
- 將文本繪製到 PDF 並保存
完整實現代碼
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 文件內容(建議指定編碼,避免亂碼)
string txtFilePath = @"Input.txt";
string textContent = File.ReadAllText(txtFilePath, System.Text.Encoding.UTF8);
// 2. 創建 PDF 文檔並添加 A4 頁面
PdfDocument pdfDocument = new PdfDocument();
PdfPageBase pdfPage = pdfDocument.Pages.Add();
// 3. 設置字體(字體名稱、大小、樣式)
PdfTrueTypeFont pdfFont = new PdfTrueTypeFont("宋體", 18f, PdfFontStyle.Bold, true);
// 4. 設置文本佈局
PdfTextLayout textLayout = new PdfTextLayout();
textLayout.Break = PdfLayoutBreakType.FitPage; // 內容適配頁面
textLayout.Layout = PdfLayoutType.Paginate; // 超出自動分頁
// 5. 設置文本格式
PdfStringFormat textFormat = new PdfStringFormat();
textFormat.Alignment = PdfTextAlignment.Justify; // 兩端對齊
textFormat.LineSpacing = 20f; // 行間距
// 6. 創建文本繪製組件
PdfTextWidget textWidget = new PdfTextWidget(textContent, pdfFont, PdfBrushes.Black);
textWidget.StringFormat = textFormat;
// 7. 定義繪製區域(預留頁邊距)
RectangleF renderBounds = new RectangleF(
new PointF(10, 25),
new SizeF(pdfPage.Canvas.ClientSize.Width - 20, pdfPage.Canvas.ClientSize.Height - 30)
);
// 8. 將文本繪製到 PDF 頁面
textWidget.Draw(pdfPage, renderBounds, textLayout);
// 9. 保存為 PDF 文件
pdfDocument.SaveToFile("TextToPdf.pdf", FileFormat.PDF);
// 釋放資源
pdfDocument.Close();
Console.WriteLine("轉換完成,PDF 已保存。");
}
catch (IOException ex)
{
Console.WriteLine("文件讀寫異常:" + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("轉換過程中出現錯誤:" + ex.Message);
}
}
}
}
關鍵代碼説明
-
讀取 TXT 內容
使用File.ReadAllText並明確指定編碼(如 UTF-8),可避免因系統默認編碼不同而導致的中文亂碼問題。 -
創建 PDF 頁面
PdfDocument.Pages.Add()默認添加 A4 尺寸的頁面。可通過重載方法自定義頁面尺寸,例如PdfPageSize.A3。 -
文本樣式與佈局配置
- 字體:
PdfTrueTypeFont支持系統中已安裝的 TrueType 字體。 - 佈局:
PdfTextLayout的Paginate屬性確保文本超出當前頁面時自動分頁。 - 格式:
PdfStringFormat可設置對齊方式、行間距等,提升排版效果。 - 繪製區域:通過
RectangleF設置文本繪製範圍,並預留邊距使文檔更美觀。
- 字體:
-
繪製與保存
PdfTextWidget負責將文本內容與樣式綁定,並通過Draw方法渲染到 PDF 頁面。最後調用SaveToFile保存文件。
本文演示的 C# 實現方案,通過 Free Spire.PDF for .NET 庫,以少量代碼完成了 TXT 到 PDF 的轉換。該方法無需依賴 Office 或第三方命令行工具,適合集成到中小型 .NET 項目中,滿足日常文檔格式轉換的基本需求。