OfficeIMO.Reader.Core
3.0.0
Prefix Reserved
dotnet add package OfficeIMO.Reader.Core --version 3.0.0
NuGet\Install-Package OfficeIMO.Reader.Core -Version 3.0.0
<PackageReference Include="OfficeIMO.Reader.Core" Version="3.0.0" />
<PackageVersion Include="OfficeIMO.Reader.Core" Version="3.0.0" />
<PackageReference Include="OfficeIMO.Reader.Core" />
paket add OfficeIMO.Reader.Core --version 3.0.0
#r "nuget: OfficeIMO.Reader.Core, 3.0.0"
#:package OfficeIMO.Reader.Core@3.0.0
#addin nuget:?package=OfficeIMO.Reader.Core&version=3.0.0
#tool nuget:?package=OfficeIMO.Reader.Core&version=3.0.0
OfficeIMO.Reader.Core
OfficeIMO.Reader.Core is the dependency-light contract and orchestration package for OfficeIMO document ingestion.
It contains normalized result models, limits, deterministic routing, handler registration, processing pipelines, and
capability manifests. It does not reference Word, Excel, PowerPoint, PDF, Email, image, or other format engines.
Install
dotnet add package OfficeIMO.Reader.Core
Add only the format packages an application needs:
dotnet add package OfficeIMO.Reader.Word
dotnet add package OfficeIMO.Reader.Email
Use OfficeIMO.Reader.All only when the complete local managed format graph is intentional.
Build a reader
using OfficeIMO.Reader;
using OfficeIMO.Reader.Word;
OfficeDocumentReader reader = new OfficeDocumentReaderBuilder()
.AddWordHandler()
.WithMaxConcurrentReads(4)
.Build();
OfficeDocumentReadResult document = reader.ReadDocument("Policy.docx");
Find content by page
Page-aware reading stays on OfficeDocumentReadResult; it is not a separate conversion path. A format adapter
populates Pages, and Reader Core provides shared location, search, and page-scoped Markdown helpers:
OfficeDocumentSearchResult matches = document.Search("retention period");
foreach (OfficeDocumentSearchHit hit in matches.Hits) {
Console.WriteLine(hit.Block.Text);
foreach (OfficeDocumentPageLocation location in hit.Pages) {
Console.WriteLine(location.Display); // for example: Page 5 of 20
}
}
string pageMarkedMarkdown = document.ToPageMarkedMarkdown();
Page boundaries are not equally authoritative in every source format:
| Format | Page provenance | Reader behavior |
|---|---|---|
Native |
Uses fixed pages and source geometry from the PDF logical model. | |
| Word | Computed |
Opt-in best-effort pagination through the OfficeIMO.Word layout engine. |
| RTF | ExplicitBreak |
Opt-in reconstruction from explicit/saved page and section-break hints; automatic overflow is not calculated. |
Use document.GetPageProvenance() when page accuracy affects citations. GetPageMarkdown() returns separate
page values, while ToPageMarkedMarkdown() produces one portable Markdown string with HTML page markers.
The original document-wide Markdown, Blocks, and Chunks remain available on the same result.
For dependency-free plain text and an explicit unknown-payload fallback:
OfficeDocumentReader reader = new OfficeDocumentReaderBuilder()
.AddPlainTextHandlers()
.Build();
OfficeDocumentReader.Default intentionally has no format handlers. This keeps Core honest: adding a format is an
explicit package and builder decision, while every built reader remains immutable and instance-scoped.
Package selection
| Need | Package |
|---|---|
| Contracts, routing, processors, schemas | OfficeIMO.Reader.Core |
| Word only | OfficeIMO.Reader.Word |
| Excel only | OfficeIMO.Reader.Excel |
| PowerPoint only | OfficeIMO.Reader.PowerPoint |
| Markdown only | OfficeIMO.Reader.Markdown |
| Email artifacts, stores, and OAB | OfficeIMO.Reader.Email |
| PDF only | OfficeIMO.Reader.Pdf |
| Every local managed handler | OfficeIMO.Reader.All |
Other OfficeIMO.Reader.* packages follow the same rule: Core plus the format's owning engine. OCR processes,
network clients, hosted providers, and native tools remain explicit host choices and are not composed by All.
Stable contracts
ReaderOptionsand format-neutral input/processing limitsReaderChunkand the schema-versionedOfficeDocumentReadResult- tables, pages, visuals, assets, links, forms, metadata, and diagnostics
- sync/async path, stream, byte-array, folder, and batch ingestion
- deterministic capability manifests with
OfficeIMOversusCustomhandler origins - bounded nested-content delegation between configured handlers
Public namespaces remain OfficeIMO.Reader; the .Core name describes package and assembly ownership.
| 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
- System.Text.Json (>= 10.0.7 && < 11.0.0)
-
.NETStandard 2.0
- System.Text.Json (>= 10.0.7 && < 11.0.0)
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (26)
Showing the top 5 NuGet packages that depend on OfficeIMO.Reader.Core:
| Package | Downloads |
|---|---|
|
OfficeIMO.Reader.Json
JSON adapter extensions for OfficeIMO.Reader. |
|
|
OfficeIMO.Reader.Csv
CSV/TSV adapters for OfficeIMO.Reader and OfficeIMO.Excel. |
|
|
OfficeIMO.Reader.Xml
XML adapter extensions for OfficeIMO.Reader. |
|
|
OfficeIMO.Reader.Html
HTML and MHTML adapter for OfficeIMO.Reader using OfficeIMO.Html. |
|
|
OfficeIMO.Reader.Epub
EPUB adapter for OfficeIMO.Reader modular ingestion. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0 | 1,012 | 7/20/2026 |