OfficeIMO.Reader.Rtf
3.0.0
Prefix Reserved
dotnet add package OfficeIMO.Reader.Rtf --version 3.0.0
NuGet\Install-Package OfficeIMO.Reader.Rtf -Version 3.0.0
<PackageReference Include="OfficeIMO.Reader.Rtf" Version="3.0.0" />
<PackageVersion Include="OfficeIMO.Reader.Rtf" Version="3.0.0" />
<PackageReference Include="OfficeIMO.Reader.Rtf" />
paket add OfficeIMO.Reader.Rtf --version 3.0.0
#r "nuget: OfficeIMO.Reader.Rtf, 3.0.0"
#:package OfficeIMO.Reader.Rtf@3.0.0
#addin nuget:?package=OfficeIMO.Reader.Rtf&version=3.0.0
#tool nuget:?package=OfficeIMO.Reader.Rtf&version=3.0.0
OfficeIMO.Reader.Rtf - RTF reader adapter
OfficeIMO.Reader.Rtf provides a bounded RTF adapter for OfficeIMO.Reader.Core using the shared OfficeIMO.Rtf semantic model.
Install
dotnet add package OfficeIMO.Reader.Rtf
Configure
using OfficeIMO.Reader;
using OfficeIMO.Reader.Rtf;
using OfficeIMO.Rtf;
OfficeDocumentReader reader = new OfficeDocumentReaderBuilder()
.AddRtfHandler()
.Build();
IReadOnlyList<ReaderChunk> chunks = reader
.Read("clinical-note.rtf")
.ToList();
Examples
Read block-aware chunks
using OfficeIMO.Reader;
using OfficeIMO.Reader.Rtf;
OfficeDocumentReader reader = new OfficeDocumentReaderBuilder()
.AddRtfHandler()
.Build();
foreach (var chunk in reader.Read("policy.rtf")) {
Console.WriteLine($"{chunk.Id}: {chunk.Location.SourceBlockKind}");
Console.WriteLine(chunk.Markdown ?? chunk.Text);
}
Read a stream with input limits
using OfficeIMO.Reader;
using OfficeIMO.Reader.Rtf;
var rtfOptions = new ReaderRtfOptions(); // bounded core profile by default
OfficeDocumentReader reader = new OfficeDocumentReaderBuilder()
.AddRtfHandler(rtfOptions)
.Build();
using var stream = File.OpenRead("large-note.rtf");
RtfConversionResult<IReadOnlyList<ReaderChunk>> result =
RtfReaderAdapter.ReadResult(stream, "large-note.rtf", new ReaderOptions {
MaxChars = 12_000,
MaxInputBytes = 100L * 1024L * 1024L
}, rtfOptions);
IReadOnlyList<ReaderChunk> chunks = result.RequireNoLoss();
Read the semantic RTF envelope
OfficeDocumentReader reader = new OfficeDocumentReaderBuilder()
.AddRtfHandler()
.Build();
OfficeDocumentReadResult document = reader.ReadDocument("form.rtf");
foreach (OfficeDocumentFormField field in document.Forms) {
Console.WriteLine($"{field.Name}: {field.Value}");
}
foreach (OfficeDocumentAsset asset in document.Assets) {
Console.WriteLine($"{asset.Kind}: {asset.FileName}");
}
reader.ReadDocument("form.rtf") uses the same native rich mapping as the adapter-specific APIs.
Reconstruct explicit page locations
OfficeDocumentReader reader = new OfficeDocumentReaderBuilder()
.AddRtfHandler(new ReaderRtfOptions {
IncludePageLocations = true
})
.Build();
OfficeDocumentReadResult document = reader.ReadDocument("policy.rtf");
OfficeDocumentSearchResult matches = document.Search("retention period");
foreach (OfficeDocumentSearchHit hit in matches.Hits) {
Console.WriteLine(string.Join(", ", hit.Pages.Select(page => page.Display)));
}
RTF is flow content rather than a fixed-page format. This option reconstructs membership from \page,
\softpage, \pagebb, and page-starting section controls. A saved \nofpages value contributes the total
page count when present. Reader emits OfficeDocumentPageProvenance.ExplicitBreak and an informational diagnostic;
it does not estimate page changes caused only by automatic text overflow.
What it emits
- RTF input kind and deterministic source/chunk metadata.
- Paragraph, list, table, note, header/footer, object, shape, and image placeholder chunks from the semantic RTF model.
- Markdown-friendly table output plus
ReaderTablepayloads for parsed RTF tables. - Parser and binder diagnostics as reader warnings when requested.
- A shared conversion report for flattened, omitted, and blocked features.
- A schema-v5 rich result containing semantic blocks, tables, hyperlinks, form fields, image visuals and payloads, embedded-object assets, metadata, and structured diagnostics.
- Optional explicit-break page membership compatible with Reader Core location, search, and page-Markdown helpers.
Boundaries
- Reader adapter configuration belongs here.
- RTF parsing, syntax preservation, semantic binding, and writing belong in
OfficeIMO.Rtf. - Shared extraction contracts belong in
OfficeIMO.Reader.Core.
Targets and license
- Targets:
netstandard2.0,net8.0,net10.0. - License: MIT.
Dependency footprint
- External: None beyond the dependencies of its OfficeIMO format packages.
- OfficeIMO:
OfficeIMO.Reader.Coreand the first-partyOfficeIMO.Rtfengine own parsing, semantic binding, chunks, assets, and diagnostics.
See the complete OfficeIMO package map for related formats and conversion paths.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| 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. |
-
.NETFramework 4.7.2
- OfficeIMO.Reader.Core (>= 3.0.0)
- OfficeIMO.Rtf (>= 3.0.0)
-
.NETStandard 2.0
- OfficeIMO.Reader.Core (>= 3.0.0)
- OfficeIMO.Rtf (>= 3.0.0)
-
net10.0
- OfficeIMO.Reader.Core (>= 3.0.0)
- OfficeIMO.Rtf (>= 3.0.0)
-
net8.0
- OfficeIMO.Reader.Core (>= 3.0.0)
- OfficeIMO.Rtf (>= 3.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on OfficeIMO.Reader.Rtf:
| Package | Downloads |
|---|---|
|
OfficeIMO.Reader.All
Composition-only preset for registering OfficeIMO.Reader's local format adapters. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0 | 129 | 7/20/2026 |
| 2.0.1 | 255 | 7/14/2026 |
| 2.0.0 | 89 | 7/14/2026 |
| 0.0.11 | 1,013 | 7/9/2026 |
| 0.0.10 | 270 | 7/8/2026 |
| 0.0.9 | 425 | 7/5/2026 |
| 0.0.8 | 191 | 7/4/2026 |
| 0.0.7 | 210 | 6/27/2026 |
| 0.0.6 | 112 | 6/27/2026 |
| 0.0.5 | 372 | 6/24/2026 |
| 0.0.4 | 160 | 6/23/2026 |
| 0.0.3 | 283 | 6/21/2026 |
| 0.0.2 | 146 | 6/16/2026 |
| 0.0.1 | 214 | 6/16/2026 |