DEV Community

Cover image for Converting RTF to PDF in C#
Jeremy K.
Jeremy K.

Posted on

Converting RTF to PDF in C#

RTF (Rich Text Format) is a cross-platform rich text format widely used for document editing and data exchange. PDF, by contrast, is ideal for document distribution and archiving due to its immutable format and robust cross-device compatibility. In .NET development, converting RTF files to PDF is a frequent requirement—this guide walks you through implementing this conversion with Free Spire.Doc for .NET, a free library for document format manipulation (note: it has file size limitations for free usage).


Prerequisites: Install Free Spire.Doc

Free Spire.Doc for .NET supports conversion for RTF, Word, and other document formats. Install it via the NuGet Package Manager Console:

Install-Package FreeSpire.Doc
Enter fullscreen mode Exit fullscreen mode

Core Code for RTF to PDF Conversion

Scenario 1: Convert a Single RTF File to PDF (Basic)

The core workflow is: Load RTF File → Save as PDF. The code is lightweight and easy to deploy:

using System;
using Spire.Doc;

namespace RtfToPdfConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Initialize Document object to handle RTF content
                Document rtfDocument = new Document();

                // Load local RTF file (replace with your file path)
                string inputRtfPath = @"C:\Files\test.rtf";
                rtfDocument.LoadFromFile(inputRtfPath, FileFormat.Rtf);

                // Save as PDF (replace with your output path)
                string outputPdfPath = @"C:\Files\test.pdf";
                rtfDocument.SaveToFile(outputPdfPath, FileFormat.Pdf);

                // Clean up resources
                rtfDocument.Close();

                Console.WriteLine($"RTF converted to PDF successfully! Output: {outputPdfPath}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Conversion failed: {ex.Message}");
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Scenario 2: Batch Convert RTF Files (Advanced)

For converting multiple RTF files in a directory, iterate through the target folder and process files in bulk:

using System;
using System.IO;
using Spire.Doc;

namespace BatchRtfToPdfConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            // Configure source (RTF) and output (PDF) directories (update paths as needed)
            string sourceRtfDir = @"C:\Files\RTF_Source";
            string outputPdfDir = @"C:\Files\PDF_Output";

            // Create output directory if it does not exist
            Directory.CreateDirectory(outputPdfDir);

            try
            {
                // Get all .rtf files in the source directory
                string[] rtfFiles = Directory.GetFiles(sourceRtfDir, "*.rtf", SearchOption.TopDirectoryOnly);

                if (rtfFiles.Length == 0)
                {
                    Console.WriteLine("No RTF files found in the source directory.");
                    return;
                }

                // Batch conversion logic
                int successfulConversions = 0;
                foreach (string rtfFile in rtfFiles)
                {
                    try
                    {
                        using (Document rtfDocument = new Document()) // Use 'using' for automatic resource disposal
                        {
                            rtfDocument.LoadFromFile(rtfFile, FileFormat.Rtf);

                            // Generate PDF file with the same name as the original RTF
                            string fileName = Path.GetFileNameWithoutExtension(rtfFile);
                            string pdfOutputPath = Path.Combine(outputPdfDir, $"{fileName}.pdf");

                            rtfDocument.SaveToFile(pdfOutputPath, FileFormat.Pdf);
                        }

                        successfulConversions++;
                        Console.WriteLine($"Converted: {rtfFile}{pdfOutputPath}");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Failed to convert {rtfFile}: {ex.Message}");
                    }
                }

                // Summary of batch results
                int failedConversions = rtfFiles.Length - successfulConversions;
                Console.WriteLine($"\nBatch conversion complete! Success: {successfulConversions}, Failed: {failedConversions}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Batch conversion error: {ex.Message}");
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Troubleshooting Common Issues

Issue Possible Causes Solutions
Error loading RTF file Invalid file path, corrupted RTF file, or insufficient file permissions 1. Verify the file path is correct (use absolute paths for clarity);
2. Confirm the RTF file can be opened in a text editor/Word;
3. Check that the application has read permissions for the file.
PDF format/layout distortion after conversion Missing fonts in the runtime environment, special RTF formatting (e.g., tables, images), or unsupported RTF elements 1. Install all fonts used in the original RTF file on the server/local machine;
2. Simplify complex RTF formatting (e.g., avoid custom spacing) where possible;
3. Test with a minimal RTF file to isolate formatting issues.

Free Spire.Doc for .NET is a cost-effective solution for small-scale, basic RTF-to-PDF conversion scenarios (e.g., low-volume document processing).

Top comments (0)