如何使用 C# 将 RTF 转换为 PDF | IronPDF

如何在IronPDF C#中将RTF转换为PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF使用PdfDocument

RTF(富文本格式)是微软在1987年引入的一种文档格式。它将文本与格式化命令(如字体、样式、颜色和项目符号列表)一起存储为纯文本,这就是为什么它能在编辑器之间良好传递。 将RTF转换为PDF让您获得一种在任何设备上看起来都一样的固定布局文件,可以加密并准备好打印或存档。

请注意IronPDF通过其文档转换路径渲染RTF,直接解释RTF标记,而不是通过用于HTML到PDF的Chrome HTML引擎。 标准格式如加粗、斜体、下划线、颜色、字体和简单的项目符号列表都能可靠地转换。 不太常见的RTF控制词、嵌套的表格和嵌入的OLE对象可能无法精确地往返,因此当文档使用高级功能时检查输出。)]

快速入门:使用IronPDF将 RTF 转换为 PDF

通过一次调用将富文本格式文件渲染为PDF。 将RenderRtfFileAsPdf指向RTF路径,然后保存返回的文档。

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 复制并运行这段代码。

    new IronPdf.ChromePdfRenderer()
         .RenderRtfFileAsPdf("input.rtf")
         .SaveAs("output.pdf");
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronPDF

    arrow pointer


如何将RTF字符串转换为PDF?

使用RenderRtfStringAsPdf方法将RTF字符串转为PDF文档。 字符串输入适用于您在运行时生成的内容:从数据库列中拉取的RTF、API返回的RTF,或在代码中组装的RTF,无需编写或清理临时文件。该方法返回一个PdfDocument,因此您可以继续处理结果,应用页眉和页脚、合并页面或添加注释和书签。

:path=/static-assets/pdf/content-code-examples/how-to/rtf-to-pdf-from-string.cs
using IronPdf;

// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// RTF string
string rtf = @"{\rtf1\ansi\deff0{\fonttbl{\f0 Arial;}}{\colortbl;\red0\green0\blue0;}\cf0This is some \b bold \b0 and \i italic \i0 text.}";

// Render from RTF string
PdfDocument pdf = renderer.RenderRtfStringAsPdf(rtf);

// Save the PDF
pdf.SaveAs("pdfFromRtfString.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer As New ChromePdfRenderer()

' RTF string
Private rtf As String = "{\rtf1\ansi\deff0{\fonttbl{\f0 Arial;}}{\colortbl;\red0\green0\blue0;}\cf0This is some \b bold \b0 and \i italic \i0 text.}"

' Render from RTF string
Private pdf As PdfDocument = renderer.RenderRtfStringAsPdf(rtf)

' Save the PDF
pdf.SaveAs("pdfFromRtfString.pdf")
$vbLabelText   $csharpLabel

输出

如何应用其他格式化选项?

您用于HTML渲染的相同RenderingOptions也适用于此。 在调用RenderRtfStringAsPdf之前设置渲染器上的纸张方向、边距和页面大小:

:path=/static-assets/pdf/content-code-examples/how-to/rtf-to-pdf-3.cs
using IronPdf;
using IronPdf.Rendering;

// Create renderer with custom options
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;

// RTF string with formatting
string rtf = @"{\rtf1\ansi\deff0{\fonttbl{\f0 Times New Roman;}{\f1 Arial;}}
{\colortbl;\red255\green0\blue0;\red0\green0\blue255;}
\f0\fs24 This is a heading\line
\f1\fs20\cf1 This text is red\line
\cf2 This text is blue\line
\b Bold text\b0 and \i italic text\i0}";

// Convert with custom options
PdfDocument pdf = renderer.RenderRtfStringAsPdf(rtf);
pdf.SaveAs("formattedRtfToPdf.pdf");
Imports IronPdf
Imports IronPdf.Rendering

' Create renderer with custom options
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.MarginLeft = 25
renderer.RenderingOptions.MarginRight = 25

' RTF string with formatting
Dim rtf As String = "{\rtf1\ansi\deff0{\fonttbl{\f0 Times New Roman;}{\f1 Arial;}}" & _
                    "{\colortbl;\red255\green0\blue0;\red0\green0\blue255;}" & _
                    "\f0\fs24 This is a heading\line" & _
                    "\f1\fs20\cf1 This text is red\line" & _
                    "\cf2 This text is blue\line" & _
                    "\b Bold text\b0 and \i italic text\i0}"

' Convert with custom options
Dim pdf As PdfDocument = renderer.RenderRtfStringAsPdf(rtf)
pdf.SaveAs("formattedRtfToPdf.pdf")
$vbLabelText   $csharpLabel

如需更精细地控制页面几何,请参阅有关自定义边距自定义纸张大小的指南。

输出

如何将RTF文件转换为PDF?

将您的文档路径传递给RenderRtfFileAsPdf。 该方法接受绝对路径和相对路径。 下载一个示例RTF文件以随行操作:sample.rtf。 下面的示例将该文件渲染为PDF。

输入

Microsoft Word 显示 RTF 文件,包含格式化文本示例,包括粗体、斜体、圆点和下划线文本

转换 RTF 文件需要哪些代码?

:path=/static-assets/pdf/content-code-examples/how-to/rtf-to-pdf-from-file.cs
using IronPdf;

// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render from RTF file
PdfDocument pdf = renderer.RenderRtfFileAsPdf("sample.rtf");

// Save the PDF
pdf.SaveAs("pdfFromRtfFile.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer As New ChromePdfRenderer()

' Render from RTF file
Private pdf As PdfDocument = renderer.RenderRtfFileAsPdf("sample.rtf")

' Save the PDF
pdf.SaveAs("pdfFromRtfFile.pdf")
$vbLabelText   $csharpLabel

要转换一个文件夹的文档,重复使用一个渲染器并遍历文件:

:path=/static-assets/pdf/content-code-examples/how-to/rtf-to-pdf-5.cs
using IronPdf;
using System.IO;

// Create renderer once for efficiency
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Get all RTF files in directory
string[] rtfFiles = Directory.GetFiles(@"C:\RTFDocuments", "*.rtf");

foreach (string rtfFile in rtfFiles)
{
    // Convert each RTF file to PDF
    PdfDocument pdf = renderer.RenderRtfFileAsPdf(rtfFile);
    
    // Save with same name but PDF extension
    string pdfPath = Path.ChangeExtension(rtfFile, ".pdf");
    pdf.SaveAs(pdfPath);
}
Imports IronPdf
Imports System.IO

' Create renderer once for efficiency
Dim renderer As New ChromePdfRenderer()

' Get all RTF files in directory
Dim rtfFiles As String() = Directory.GetFiles("C:\RTFDocuments", "*.rtf")

For Each rtfFile As String In rtfFiles
    ' Convert each RTF file to PDF
    Dim pdf As PdfDocument = renderer.RenderRtfFileAsPdf(rtfFile)
    
    ' Save with same name but PDF extension
    Dim pdfPath As String = Path.ChangeExtension(rtfFile, ".pdf")
    pdf.SaveAs(pdfPath)
Next
$vbLabelText   $csharpLabel

输出

转换 RTF 文件时有哪些常见问题?

渲染RTF文件时需要注意一些情况:

  1. 字体:RTF中提到的字体必须安装在进行转换的机器上,这在无头服务器和容器上尤为重要。 字体管理指南涵盖了运行时注册字体。
  2. 大型文档:使用异步API将长文件从请求线程渲染,以保持应用程序的响应。
  3. 国际字符:包含非拉丁文写本的文档依赖于源RTF中的正确编码和覆盖这些字形的已安装字体。
  4. 高级标记:嵌套的表格和嵌入的对象可能不能完全再现。 当文档依赖于它们时,将输出与源进行比较。

如何为转换后的 PDF 添加安全性?

渲染后,通过SecuritySettings锁定文档,设置拥有者密码、用户密码以及复制和打印权限:

:path=/static-assets/pdf/content-code-examples/how-to/rtf-to-pdf-6.cs
using IronPdf;
using IronPdf.Security;

// Convert RTF to PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderRtfFileAsPdf("confidential.rtf");

// Apply security settings
pdf.SecuritySettings.MakePdfDocumentReadOnly("owner_password");
pdf.SecuritySettings.UserPassword = "user_password";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

// Save secured PDF
pdf.SaveAs("secured_document.pdf");
Imports IronPdf
Imports IronPdf.Security

' Convert RTF to PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderRtfFileAsPdf("confidential.rtf")

' Apply security settings
pdf.SecuritySettings.MakePdfDocumentReadOnly("owner_password")
pdf.SecuritySettings.UserPassword = "user_password"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint

' Save secured PDF
pdf.SaveAs("secured_document.pdf")
$vbLabelText   $csharpLabel

PDF权限和密码指南涵盖了所有限制选项。

Icon Quote related to 如何为转换后的 PDF 添加安全性?

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic related to 如何为转换后的 PDF 添加安全性?

Milan Jovanovic

微软MVP

查看案例研究
Icon Quote related to 如何为转换后的 PDF 添加安全性?

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 如何为转换后的 PDF 添加安全性?

Brent Matzelle

首席技术官,OPYN

查看案例研究
Icon Quote related to 如何为转换后的 PDF 添加安全性?

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 如何为转换后的 PDF 添加安全性?

David Jones

首席软件工程师,Agorus Build

查看案例研究

如何将多个RTF文件合并成一个PDF?

将每个RTF文件渲染为其自己的PdfDocument.Merge将它们合并。 这从多个源文档中构建一个单一的交付物,例如报告的章节:

:path=/static-assets/pdf/content-code-examples/how-to/rtf-to-pdf-7.cs
using IronPdf;
using System.Collections.Generic;

// Create renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Convert multiple RTF files
List<PdfDocument> pdfs = new List<PdfDocument>();
pdfs.Add(renderer.RenderRtfFileAsPdf("chapter1.rtf"));
pdfs.Add(renderer.RenderRtfFileAsPdf("chapter2.rtf"));
pdfs.Add(renderer.RenderRtfFileAsPdf("chapter3.rtf"));

// Merge PDFs
PdfDocument mergedPdf = PdfDocument.Merge(pdfs);

// Add page numbers across the merged document
mergedPdf.AddTextFooters(new TextHeaderFooter
{
    CenterText = "Page {page} of {total-pages}",
    FontSize = 12
});

// Save combined document
mergedPdf.SaveAs("combined_document.pdf");

// Clean up individual PDFs
foreach (var pdf in pdfs)
{
    pdf.Dispose();
}
Imports IronPdf
Imports System.Collections.Generic

' Create renderer
Dim renderer As New ChromePdfRenderer()

' Convert multiple RTF files
Dim pdfs As New List(Of PdfDocument)()
pdfs.Add(renderer.RenderRtfFileAsPdf("chapter1.rtf"))
pdfs.Add(renderer.RenderRtfFileAsPdf("chapter2.rtf"))
pdfs.Add(renderer.RenderRtfFileAsPdf("chapter3.rtf"))

' Merge PDFs
Dim mergedPdf As PdfDocument = PdfDocument.Merge(pdfs)

' Add page numbers across the merged document
mergedPdf.AddTextFooters(New TextHeaderFooter With {
    .CenterText = "Page {page} of {total-pages}",
    .FontSize = 12
})

' Save combined document
mergedPdf.SaveAs("combined_document.pdf")

' Clean up individual PDFs
For Each pdf In pdfs
    pdf.Dispose()
Next pdf
$vbLabelText   $csharpLabel

页脚占位符{total-pages}给合并结果中的页面编号。

如何从Web端点返回转换后的PDF?

在ASP.NET中,在操作中渲染RTF并将文档的字节作为文件结果返回。 读取File

[HttpGet]
public IActionResult ConvertRtfToPdf(string rtfContent)
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderRtfStringAsPdf(rtfContent);
    return File(pdf.BinaryData, "application/pdf", "converted_document.pdf");
}
[HttpGet]
public IActionResult ConvertRtfToPdf(string rtfContent)
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderRtfStringAsPdf(rtfContent);
    return File(pdf.BinaryData, "application/pdf", "converted_document.pdf");
}
<HttpGet>
Public Function ConvertRtfToPdf(rtfContent As String) As IActionResult
    Dim renderer As New ChromePdfRenderer()
    Dim pdf As PdfDocument = renderer.RenderRtfStringAsPdf(rtfContent)
    Return File(pdf.BinaryData, "application/pdf", "converted_document.pdf")
End Function
$vbLabelText   $csharpLabel

结论

IronPDF通过PdfDocument可插入库的其他功能中进行布局、安全和合并。 从这里,将RTF转换与上面显示的自定义边距和页眉和页脚配对,或继续PDF转换的完整列表

常见问题解答

如何在 C# 中将 RTF 文件转换为 PDF?

有了 IronPDF,只需两行代码,您就可以使用 RenderRtfFileAsPdf 方法将 RTF 文件转换为 PDF。只需创建一个ChromePdfRenderer实例并调用输入文件路径的RenderRtfFileAsPdf,然后使用SaveAs方法保存结果即可。

我可以将 RTF 字符串直接转换为 PDF 而无需先将其保存为文件吗?

是的,IronPDF 提供了 RenderRtfStringAsPdf 方法,允许您将 RTF 内容从字符串直接转换为 PDF 文档。这在处理动态生成的 RTF 内容或数据库数据时尤其有用。

RTF 转换为 PDF 是否保留格式和样式?

IronPDF通过其文档转换路径渲染RTF,因此字体、样式、颜色、加粗、斜体和简单项目符号列表等标准格式可以可靠转换。较不常见的控制词、嵌套表格和嵌入的OLE对象可能无法精确回溯,因此如果文档使用了高级功能,请检查输出。

将 RTF 转换为 PDF 有哪些好处?

using IronPDF 将 RTF 转换为 PDF 有几个好处:跨平台的易访问性、压缩功能、打印优化、无论查看设备如何都能保持一致的文档外观、增强的安全功能以及专业的文档分发准备。

我能否在转换后的 PDF 中添加页眉、页脚和页码?

是的,IronPDF 在将 RTF 转换为 PDF 时支持全部 RenderingOptions。您可以应用文本和 HTML 页眉和页脚,添加页码,实现文本和图像戳记,以及自定义页面大小和方向。

从 RTF 转换为 PDF 后,是否可以对 PDF 进行操作?

当然可以!使用 IronPDF 从 RTF 生成 PDF 后,您可以执行各种页面操作,包括合并和拆分 PDF、旋转页面、添加注释和实现书签。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 19,936,792 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。