如何通过 C# 将 TXT 文本转换为 PDF

在日常开发和办公场景中,将纯文本(TXT)格式转换为 PDF 格式是常见需求。PDF 格式具备跨平台、格式稳定、不易篡改的特性,而 TXT 则更侧重内容存储,二者的格式转换能兼顾内容可读性与传播规范性。本文将介绍如何通过 C# 和 .NET 免费库实现 TXT 到 PDF 的转换。


一、环境准备

1. 核心库介绍

Free Spire.PDF for .NET 是一款免费的 PDF 操作类库,提供了 PDF 文档创建、编辑、格式转换等基础功能。需要注意的是,该免费版存在一定限制(如单文档转换页数上限),但完全满足 TXT 转 PDF 的基础需求。

2. 环境配置

  • 开发环境:Visual Studio 或其他 C# IDE;

  • 库安装:通过 NuGet 包管理器安装 Free Spire.PDF,执行以下 NuGet 命令:

    bash 复制代码
    Install-Package FreeSpire.PDF

二、TXT 转 PDF 核心实现步骤

TXT 纯文本转 PDF 的核心逻辑可拆解为「读取 TXT 内容→创建 PDF 载体→设置文本渲染格式→将文本绘制到 PDF→保存 PDF 文件」五个步骤,以下是完整实现代码及分步解析。

1. 完整实现代码

csharp 复制代码
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文档实例并添加空白页面
                PdfDocument pdfDocument = new PdfDocument();
                PdfPageBase pdfPage = pdfDocument.Pages.Add(); // 默认A4页面

                // 3. 配置PDF文本渲染的字体
                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("TXT转PDF成功!");
            }
            catch (IOException ex)
            {
                Console.WriteLine("文件操作异常:" + ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("转换失败:" + ex.Message);
            }
        }
    }
}

2. 代码关键解析

(1)读取 TXT 内容

使用 File.ReadAllText 读取文本文件,建议显式指定编码(如UTF-8) ---TXT 文件的默认编码可能因系统而异,未指定编码易导致中文等字符乱码。

(2)PDF 文档与页面创建
PdfDocument 是整个 PDF 文档的核心实例,pdfDocument.Pages.Add() 会创建一个默认 A4 尺寸的空白页面,也可通过重载方法自定义页面大小(如 A3、自定义尺寸)。

(3)文本格式与布局配置

  • PdfTrueTypeFont:定义字体、字号和样式;
  • PdfTextLayout:设置 Paginate 可实现「文本超出单页时自动新建页面」,避免内容被截断;
  • PdfStringFormat:配置文本对齐方式(左对齐、居中、两端对齐)和行间距,提升 PDF 可读性;
  • RectangleF:定义文本在页面中的渲染区域,预留边距避免文本紧贴页面边缘。

(4)文本绘制与 PDF 保存
PdfTextWidget 是文本渲染的核心组件,通过 Draw 方法将文本绘制到指定页面和区域;最终通过 SaveToFile 保存 PDF 文件,支持指定保存路径。


本文展示的 C# TXT 文本转 PDF 方案,为中小型项目提供了代码量少,且无需依赖第三方工具(如Office、WkHtmlToPdf)的实用解决方案。通过合理的配置和优化,该方案能够满足大部分基础转换需求。

相关推荐
mCell4 小时前
如何零成本搭建个人站点
前端·程序员·github
mCell5 小时前
为什么 Memo Code 先做 CLI:以及终端输入框到底有多难搞
前端·设计模式·agent
恋猫de小郭5 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
少云清5 小时前
【安全测试】2_客户端脚本安全测试 _XSS和CSRF
前端·xss·csrf
银烛木5 小时前
黑马程序员前端h5+css3
前端·css·css3
m0_607076606 小时前
CSS3 转换,快手前端面试经验,隔壁都馋哭了
前端·面试·css3
听海边涛声6 小时前
CSS3 图片模糊处理
前端·css·css3
IT、木易6 小时前
css3 backdrop-filter 在移动端 Safari 上导致渲染性能急剧下降的优化方案有哪些?
前端·css3·safari
0思必得06 小时前
[Web自动化] Selenium无头模式
前端·爬虫·selenium·自动化·web自动化
anOnion6 小时前
构建无障碍组件之Dialog Pattern
前端·html·交互设计