如何通过 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)的实用解决方案。通过合理的配置和优化,该方案能够满足大部分基础转换需求。

相关推荐
鱼毓屿御8 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
sugar__salt8 小时前
Vue3 表单双向绑定与响应式核心 API 技术详解
前端·javascript·vue.js
郝亚军8 小时前
使用Vue 3和Nginx打包和部署Vue.js项目的一般步骤
前端·vue.js·nginx
SmartBoyW8 小时前
CSS弹性布局(Flexbox)学习笔记:从零开始搞懂弹性布局
前端·javascript
用户69371750013849 小时前
从代码生产者到 AI 协作者:软件工程师的角色重构
android·前端·后端
嘟嘟07179 小时前
搞懂 useState 从原生 DOM 到 React 惰性初始化的完整链路
前端·react.js·编程语言
牧艺9 小时前
cos-design RippleWater & SmokeFog:水面涟漪与烟雾雾气怎么做
前端·canvas·视觉设计
用户938515635079 小时前
写了这么久 useState,你真的知道它在干什么吗?
前端·javascript
慢功夫9 小时前
💡第七篇:VSCode语言服务中,代码跳转和诊断是怎么做的?
前端·visual studio code
Csvn9 小时前
✨ TypeScript `satisfies` 操作符实战——5 个让代码更「聪明」的生产场景
前端