OfficeIMO.Reader.OpenDocument
3.5.1
Prefix Reserved
dotnet add package OfficeIMO.Reader.OpenDocument --version 3.5.1
NuGet\Install-Package OfficeIMO.Reader.OpenDocument -Version 3.5.1
<PackageReference Include="OfficeIMO.Reader.OpenDocument" Version="3.5.1" />
<PackageVersion Include="OfficeIMO.Reader.OpenDocument" Version="3.5.1" />
<PackageReference Include="OfficeIMO.Reader.OpenDocument" />
paket add OfficeIMO.Reader.OpenDocument --version 3.5.1
#r "nuget: OfficeIMO.Reader.OpenDocument, 3.5.1"
#:package OfficeIMO.Reader.OpenDocument@3.5.1
#addin nuget:?package=OfficeIMO.Reader.OpenDocument&version=3.5.1
#tool nuget:?package=OfficeIMO.Reader.OpenDocument&version=3.5.1
OfficeIMO.Reader.OpenDocument
Native ODT, ODS, ODP, ODG, and FODG ingestion for OfficeIMO.Reader.Core. The adapter uses OfficeIMO.OpenDocument and does not invoke LibreOffice or Microsoft Office at runtime.
Configure a reader once, then reuse it:
using OfficeIMO.Reader;
using OfficeIMO.Reader.OpenDocument;
OfficeDocumentReader reader = new OfficeDocumentReaderBuilder()
.AddOpenDocumentHandler()
.Build();
IReadOnlyList<ReaderChunk> chunks = reader.Read("report.odt").ToList();
The handler emits:
- paragraph-, heading-, and table-aligned ODT chunks;
- bounded sheet/table chunks for ODS, including sheet and A1-range locations;
- slide-aligned ODP chunks with tables and optional speaker notes;
- page-aligned ODG/FODG chunks with shape text, including nested groups in paint order. Drawing warnings identify hidden-layer text inclusion and the bounds of the chunk profile.
ReaderOptions.MaxTableRows bounds table extraction, and MaxChars splits oversized paragraph, table, sheet, and slide text using the shared Reader chunker. The Reader normalizes MaxChars to at least 256. Split segments preserve source locations and all extracted text; structured table metadata appears on the first segment and remains bounded separately by the row and column limits. Markdown tables may span segments.
Pass ReaderOpenDocumentOptions to AddOpenDocumentHandler(...) to select SheetName, A1Range, HeadersInFirstRow, and IncludeSpeakerNotes. ODS extraction caps a sheet at 256 columns. Set ReaderOptions.OpenPassword to read supported encrypted ODF packages.
ReaderOpenDocumentOptions.MaxExtractedCharacters defaults to 16,000,000 characters across one document, including every logical occurrence of repeated cells. Extraction rejects inputs exceeding that budget before building joined text and Markdown. Raise it explicitly for trusted larger workloads; MaxXmlCharacters separately bounds the parsed XML. Integer native admission and extraction failures throw ReaderResourceLimitException with the effective maximum. Native compression-ratio and encrypted-package resource failures throw ReaderAdmissionLimitException, retaining the structured native cause. Ratio measurements remain exact doubles; encrypted failures leave numeric fields null when the native owner does not expose them. Both exception types remain terminal during lazy enumeration, folder, batch and nested ZIP reads. Malformed files keep their ordinary per-file failure behavior.
The platform XML-character ceiling remains a malformed-XML boundary. For a separate native load shared with Reader projection, an ingestion profile can keep XML entry and decrypted-entry byte limits at or below MaxXmlCharacters; flat XML additionally requires the input-byte limit at or below that character limit. DTDs are prohibited. Reader's ordinary character policy is not raised automatically.
Text and metadata projection
OfficeDocumentReadResult document = reader.ReadDocument("report.odt", new ReaderOptions {
Projection = ReaderProjection.TextAndMetadata
});
This projection emits located native text and metadata while omitting secondary Markdown, image/object assets, visual and form projections. It uses the native deferred binary profile and reports binary entry paths, declared lengths and payload state with not-requested coverage. SupportsTextAndMetadata in the capability manifest describes this qualified profile. Native input, ZIP expansion and XML limits still apply; Reader output limits are separate.
Encrypted ODF containing non-XML binary entries is refused with the native UnsupportedProfile classification before key derivation. Encrypted XML/RDF-only input retains ordinary decryption checks. FODG with inline office:binary-data is refused before Base64 decoding. The adapter does not fall back to Full when this projection is requested. Use the native document's bounded embedded-payload session for explicit selected reads. The default Full projection retains rich extraction.
For one native load shared by Reader projection and selected payload reads, call the loaded model extension:
using OfficeIMO.OpenDocument;
using OfficeIMO.Reader.OpenDocument;
OdtDocument native = OdtDocument.Load("report.odt", new OdfLoadOptions { DeferBinaryPayloads = true });
OfficeDocumentReadResult projected = native.ReadDocument("report.odt", new ReaderOptions {
Projection = ReaderProjection.TextAndMetadata
});
using var payloads = native.InspectEmbeddedPayloads();
The caller retains the native model. This entrypoint applies Reader projection and output budgets without reopening the source; its logical source name is not read or hashed as a file. Input and native loading limits apply at the preceding load, and already expanded payloads cannot be deferred retroactively.
Rich document inspection
ReadDocument also retains native links and bounded image payloads, ODT header/footer/note stories, ODP slide notes and table links, and authored ODP/ODG masters, including unused masters. Source locations distinguish master stories from slide/page content; ODT flow content does not acquire inferred physical pages. Reading external links and image references never fetches their targets. Image placements share already-loaded package payloads by canonical entry path.
Enable ReaderOptions.Inspection to collect native revision declarations, sparse ODS formula/cache and annotation prototypes, authored visibility, package feature observations, and bounded safety evidence. Repeated ODS ranges keep original repeat counts and source ranges while the selected A1 range identifies the inspected subset. The result records unsupported form-widget interpretation explicitly because the current owner preserves form XML without a typed widget surface. Source transforms, image OCR, and embedded object execution are not performed.
ReaderOpenDocumentOptions bounds rich blocks, link counts/characters, individual image bytes, and total unique image bytes. An exceeded rich resource or native safety ceiling is terminal. Table row/column omissions remain explicit in table metadata and diagnostics. The native HeaderFooters, master Shapes, and their paragraph/table/inline/list editing wrappers persist changes to their owning package part.
Dependency footprint
- External: None; no LibreOffice runtime.
- OfficeIMO:
OfficeIMO.Reader.CoreandOfficeIMO.OpenDocument; ODT/ODS/ODP/ODG parsing stays in the native package.
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.OpenDocument (>= 3.5.1)
- OfficeIMO.Reader.Core (>= 3.5.1)
-
.NETStandard 2.0
- OfficeIMO.OpenDocument (>= 3.5.1)
- OfficeIMO.Reader.Core (>= 3.5.1)
-
net10.0
- OfficeIMO.OpenDocument (>= 3.5.1)
- OfficeIMO.Reader.Core (>= 3.5.1)
-
net8.0
- OfficeIMO.OpenDocument (>= 3.5.1)
- OfficeIMO.Reader.Core (>= 3.5.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on OfficeIMO.Reader.OpenDocument:
| 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.5.1 | 0 | 10/16/2026 |
| 3.4.5 | 609 | 10/10/2026 |
| 3.4.4 | 300 | 9/27/2026 |
| 3.4.3 | 316 | 9/12/2026 |
| 3.4.2 | 221 | 9/9/2026 |
| 3.4.1 | 238 | 9/7/2026 |
| 3.4.0 | 171 | 9/6/2026 |
| 3.3.0 | 152 | 9/2/2026 |
| 3.2.7 | 161 | 8/29/2026 |
| 3.2.6 | 1,333 | 8/22/2026 |
| 3.2.5 | 263 | 8/21/2026 |
| 3.2.4 | 255 | 8/19/2026 |
| 3.2.3 | 174 | 8/17/2026 |
| 3.2.2 | 383 | 8/13/2026 |
| 3.2.1 | 308 | 8/11/2026 |
| 3.2.0 | 451 | 8/7/2026 |
| 3.1.1 | 210 | 8/7/2026 |
| 3.1.0 | 177 | 8/6/2026 |
| 3.0.3 | 612 | 7/27/2026 |
| 3.0.2 | 175 | 7/26/2026 |