C# 如何将 TXT 文本转换为 PDF
<p>在日常开发和办公场景中,将纯文本(TXT)文件转换为 PDF 格式是一项常见需求。PDF 格式具备跨平台、样式固定、不易被篡改等特点,而 TXT 格式则更侧重于内容的轻量存储。二者之间的转换可以兼顾内容的可读性与文档的规范性与便携性。本文将介绍如何通过 C# 和免费的 .NET 类库实现 TXT 到 PDF 的高效转换。</p><h2 id="一环境准备">一、环境准备</h2>
<h3 id="1-核心库简介">1. 核心库简介</h3>
<p><strong>Free Spire.PDF for .NET</strong> 是一个功能丰富的免费 PDF 操作库,支持 PDF 文档的创建、编辑、合并、转换等基础功能。免费版本对部分高级功能或处理规模有一定限制(例如单次转换的页数上限),但对于常规的 TXT 转 PDF 任务完全够用。</p>
<h3 id="2-环境配置">2. 环境配置</h3>
<ul>
<li><strong>开发环境</strong>:Visual Studio 2022 或更高版本,或其他支持 .NET 的 IDE。</li>
<li><strong>库安装</strong>:通过 NuGet 包管理器安装 <strong>FreeSpire.PDF</strong>。可在程序包管理器控制台中执行以下命令:<pre><code class="language-bash">Install-Package FreeSpire.PDF
</code></pre>
</li>
</ul>
<h2 id="二txt-转-pdf-实现步骤">二、TXT 转 PDF 实现步骤</h2>
<p>转换过程可归纳为以下核心步骤:</p>
<ol>
<li>读取 TXT 文件内容</li>
<li>创建 PDF 文档与页面</li>
<li>设置文本字体与样式</li>
<li>定义文本布局与格式</li>
<li>将文本绘制到 PDF 并保存</li>
</ol>
<h3 id="完整实现代码">完整实现代码</h3>
<pre><code class="language-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 文档并添加 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);
}
}
}
}
</code></pre>
<h3 id="关键代码说明">关键代码说明</h3>
<ol>
<li>
<p><strong>读取 TXT 内容</strong><br>
使用 <code>File.ReadAllText</code> 并明确指定编码(如 UTF-8),可避免因系统默认编码不同而导致的中文乱码问题。</p>
</li>
<li>
<p><strong>创建 PDF 页面</strong><br>
<code>PdfDocument.Pages.Add()</code> 默认添加 A4 尺寸的页面。可通过重载方法自定义页面尺寸,例如 <code>PdfPageSize.A3</code>。</p>
</li>
<li>
<p><strong>文本样式与布局配置</strong></p>
<ul>
<li><strong>字体</strong>:<code>PdfTrueTypeFont</code> 支持系统中已安装的 TrueType 字体。</li>
<li><strong>布局</strong>:<code>PdfTextLayout</code> 的 <code>Paginate</code> 属性确保文本超出当前页面时自动分页。</li>
<li><strong>格式</strong>:<code>PdfStringFormat</code> 可设置对齐方式、行间距等,提升排版效果。</li>
<li><strong>绘制区域</strong>:通过 <code>RectangleF</code> 设置文本绘制范围,并预留边距使文档更美观。</li>
</ul>
</li>
<li>
<p><strong>绘制与保存</strong><br>
<code>PdfTextWidget</code> 负责将文本内容与样式绑定,并通过 <code>Draw</code> 方法渲染到 PDF 页面。最后调用 <code>SaveToFile</code> 保存文件。</p>
</li>
</ol>
<hr>
<p>本文演示的 C# 实现方案,通过 <strong>Free Spire.PDF for .NET</strong> 库,以少量代码完成了 TXT 到 PDF 的转换。该方法无需依赖 Office 或第三方命令行工具,适合集成到中小型 .NET 项目中,满足日常文档格式转换的基本需求。</p><br><br>
来源:https://www.cnblogs.com/jazz-z/p/19595932
頁:
[1]