博客 / 詳情

返回

C# 如何將 TXT 文本轉換為 PDF

在日常開發和辦公場景中,將純文本(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 實現步驟

轉換過程可歸納為以下核心步驟:

  1. 讀取 TXT 文件內容
  2. 創建 PDF 文檔與頁面
  3. 設置文本字體與樣式
  4. 定義文本佈局與格式
  5. 將文本繪製到 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);
            }
        }
    }
}

關鍵代碼説明

  1. 讀取 TXT 內容
    使用 File.ReadAllText 並明確指定編碼(如 UTF-8),可避免因系統默認編碼不同而導致的中文亂碼問題。

  2. 創建 PDF 頁面
    PdfDocument.Pages.Add() 默認添加 A4 尺寸的頁面。可通過重載方法自定義頁面尺寸,例如 PdfPageSize.A3

  3. 文本樣式與佈局配置

    • 字體PdfTrueTypeFont 支持系統中已安裝的 TrueType 字體。
    • 佈局PdfTextLayoutPaginate 屬性確保文本超出當前頁面時自動分頁。
    • 格式PdfStringFormat 可設置對齊方式、行間距等,提升排版效果。
    • 繪製區域:通過 RectangleF 設置文本繪製範圍,並預留邊距使文檔更美觀。
  4. 繪製與保存
    PdfTextWidget 負責將文本內容與樣式綁定,並通過 Draw 方法渲染到 PDF 頁面。最後調用 SaveToFile 保存文件。


本文演示的 C# 實現方案,通過 Free Spire.PDF for .NET 庫,以少量代碼完成了 TXT 到 PDF 的轉換。該方法無需依賴 Office 或第三方命令行工具,適合集成到中小型 .NET 項目中,滿足日常文檔格式轉換的基本需求。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.