There is a newer version of this package available.
See the version list below for details.
dotnet add package sautinsoft.htmltortf --version                
NuGet\Install-Package sautinsoft.htmltortf -Version                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="sautinsoft.htmltortf" Version="" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add sautinsoft.htmltortf --version                
#r "nuget: sautinsoft.htmltortf,"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install sautinsoft.htmltortf as a Cake Addin
#addin nuget:?package=sautinsoft.htmltortf&version=

// Install sautinsoft.htmltortf as a Cake Tool
#tool nuget:?package=sautinsoft.htmltortf&version=                


Nuget versionNuget downloads


SautinSoft.HtmlToRtf is .NET assembly (SDK) which gives API to convert HTML to DOCX, RTF and Text. Merge and replace text in RTF documents.

Top Features

System Requirement

  • .NET Framework 4.6.1 - 4.8
  • .NET Core 2.0 - 3.1, .NET 5, 6, 7
  • .NET Standard 2.0
  • Windows, Linux, macOS, Android, iOS.

Getting Started with HTML to RTF .Net

Are you ready to give HTML to RTF .NET a try? Simply execute Install-Package sautinsoft.htmltortf from Package Manager Console in Visual Studio to fetch the NuGet package. If you already have HTML to RTF .NET and want to upgrade the version, please execute Update-Package sautinsoft.htmltortf to get the latest version.

Convert HTML to WORD

SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
string inputFile = @"sample.html";
// You want to save in DOCX.
string outputFile = @"result.docx";
// You want to save in RTF.
string outputFile = @"result.rtf";

Merge multiple RTF files

SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
// Array with several RTF files.
string[] rtfFiles = new string[] { "footer.rtf", "footer.rtf", "footer.rtf" };
string singleRtf = String.Empty;

// Let's divide RTF documents using page break.
h.MergeOptions.PageBreakBetweenDocuments = true;

foreach (string rtfFile in rtfFiles)
        string rtfFilePath = Path.Combine(htmlDir.FullName, rtfFile);

        // Copy 1st RTF to 'singleRtf'
        if (String.IsNullOrEmpty(singleRtf))
            singleRtf = File.ReadAllText(rtfFilePath);

        // Merge 2nd, 3rd ....
            singleRtf = h.MergeRtfString(singleRtf, File.ReadAllText(rtfFilePath));

// Save 'singleRtf' to a file only for demonstration purposes.
string singleRtfPath = Path.Combine(htmlDir.FullName, "single.rtf");
File.WriteAllText(singleRtfPath, singleRtf);


Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 is compatible.  netcoreapp2.1 is compatible.  netcoreapp2.2 is compatible.  netcoreapp3.0 is compatible.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net46 is compatible.  net461 is compatible.  net462 is compatible.  net463 was computed.  net47 is compatible.  net471 is compatible.  net472 is compatible.  net48 is compatible.  net481 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2024.5.22 3,109 5/22/2024
2023.12.6 11,313 12/6/2023
2023.6.1 10,933 6/1/2023 22,313 2/16/2023 1,317 11/9/2022 13,882 5/25/2022 9,887 12/7/2021 335 10/27/2021 6,445 6/4/2021 704 5/12/2021 322 3/16/2021 304 1/18/2021 446,540 4/30/2020 17,919 2/11/2020 20,501 4/16/2019 10,588 8/16/2018 1,404 7/13/2018 1,047 7/11/2018 17,122 5/31/2018 50,450 1/5/2017

What's new in the version 8.5:
+ We are faced with the problem of reading special characters (ä ü ö) from HTML in various encodings. We have done a lot of work to improve the reading of various encodings of users from all over the world. Now the result of converting to Word looks much better and more accurate.
+ Improved algorithm for calculating fill size for paragraphs.
+ The problem with incorrect determination of line spacing has been resolved.
+ The issue with the erroneous definition of the source encoding has been resolved. Now, encodings (Latin1, UTF-8, ISO-XXX, ASCII, etc) are recognized correctly.
+ The bug with wrapping tables has been resolved. Fixed bug when checking "part number".
+ We've fixed the issue with "h.PageStyle.PageNumbers.Appearance = SautinSoft.HtmlToRtf.ePageNumberingAppearence.PageNumSecond;" Now this option works fine!
+ Improved work with DOCX and RTF documents and fixed some minor issues, which our customers sent to us.