Rich Text Format documents require specific handling for distribution compared to Portable Document Format files. In .NET environments, leveraging specialized libraries simplifies rendering high-fidelity outputs. The following workflow demonstrates integration techniques using the Free Spire.Doc SDK.
Prerequisites and Package Integration
Obtain the necessary assembly via the .NET CLI or NuGet Package Manager:
Install-Package FreeSpire.Doc
Single File Transformation Workflow
The fundamental process involves instantiating the Document class, reading the source input, and exporting to the target format. Variable naming conventions below emphasize clarity regarding input and output streams.
using System;
using Spire.Doc;
namespace DocFormatUtility
{
public class Converter
{
public static void Execute(string rtfInput, string pdfOutput)
{
try
{
var loader = new Document();
loader.LoadFromFile(rtfInput, FileFormat.Rtf);
loader.SaveToFile(pdfOutput, FileFormat.Pdf);
Console.WriteLine($"Conversion completed: {pdfOutput}");
}
catch (Exception err)
{
Console.Error.WriteLine($"Error occurred: {err.Message}");
}
finally
{
loader.Dispose();
}
}
public static void Main(string[] args)
{
// Example paths
var source = @"D:\Docs\sample.rtf";
var target = @"D:\Docs\sample.pdf";
Execute(source, target);
}
}
}
Handling Multiple Files Simultaneously
When processing large datasets, iterate through a directory path. Ensure the destination folder exists before writing files.
using System;
using System.IO;
using Spire.Doc;
namespace BatchProcessor
{
class Processor
{
static void Run()
{
string inputFolder = @"D:\Incoming\rtf_files";
string destFolder = @"D:\Outgoing\pdf_exports";
if (!Directory.Exists(destFolder))
{
Directory.CreateDirectory(destFolder);
}
try
{
string[] allFiles = Directory.GetFiles(inputFolder, "*.rtf");
int processed = 0;
foreach (var currentFile in allFiles)
{
try
{
var doc = new Document();
doc.LoadFromFile(currentFile, FileFormat.Rtf);
string baseName = Path.GetFileNameWithoutExtension(currentFile);
string outPath = Path.Combine(destFolder, $"{baseName}.pdf");
doc.SaveToFile(outPath, FileFormat.Pdf);
doc.Dispose();
processed++;
Console.WriteLine($"Processed: {outPath}");
}
catch (Exception e)
{
Console.WriteLine($"Failed: {currentFile} - {e.Message}");
}
}
Console.WriteLine($"Total Success: {processed}/{allFiles.Length}");
}
catch (Exception systemEx)
{
Console.WriteLine("Directory error: " + systemEx.Message);
}
}
static void Main(string[] args) => Run();
}
}
Troubleshooting Common Errors
Incorrect File Paths
Ensure the string literals passed to LoadFromFile point to valid locations on the disk. Hardcoding absolute paths can cause runtime exceptions if directories are missing.
Rendering Discrepancies
Complex layouts may appear distorted in the generated PDF. This typically happens when specific fonts referenced in the RTF source are absent from the execution environment. Installing the required font collection usually resolves these layout shifts.