OfficeIMO.Epub.Image 3.5.3

Prefix Reserved
dotnet add package OfficeIMO.Epub.Image --version 3.5.3
                    
NuGet\Install-Package OfficeIMO.Epub.Image -Version 3.5.3
                    
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="OfficeIMO.Epub.Image" Version="3.5.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OfficeIMO.Epub.Image" Version="3.5.3" />
                    
Directory.Packages.props
<PackageReference Include="OfficeIMO.Epub.Image" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OfficeIMO.Epub.Image --version 3.5.3
                    
#r "nuget: OfficeIMO.Epub.Image, 3.5.3"
                    
#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.
#:package OfficeIMO.Epub.Image@3.5.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OfficeIMO.Epub.Image&version=3.5.3
                    
Install as a Cake Addin
#tool nuget:?package=OfficeIMO.Epub.Image&version=3.5.3
                    
Install as a Cake Tool

OfficeIMO.Epub.Image

OfficeIMO.Epub.Image is the thin visual adapter between the bounded EPUB package model and the existing OfficeIMO HTML/Drawing renderer. It adds no image encoder or layout engine.

Retained application/xhtml+xml chapters are parsed as XML. Empty non-void elements remain siblings, and CSS text and SVG/MathML namespaces retain their XML meaning. Malformed XML, noncanonical XHTML names, processing instructions, and DTD-defined entity references are rejected instead of being recovered as HTML. text/html chapters and the extracted-text fallback keep HTML parsing.

Load raw chapter HTML and resource payloads when visual fidelity matters:

EpubDocument book = EpubDocument.Load(path, new EpubReadOptions {
    IncludeRawHtml = true,
    IncludeResourceData = true
});

IReadOnlyList<OfficeImageExportResult> pages = await book
    .ToImages()
    .Paged()
    .AsPng()
    .ExportAsync();

When raw HTML or resource bytes were not retained, export remains available through a diagnosed plain-text or missing-resource fallback.

Package resources use case-sensitive container paths. Chapter count, text-budget, invalid-encoding, and unsupported-spine omissions propagate into image diagnostics and the RequireNoOmissions policy.

An HTML base element resolves relative URLs from the chapter's container path. External URLs never select retained package bytes. Use asynchronous export with ResourceResolver to supply policy-approved external resources; synchronous export reports external images that still need resolution.

Fixed-layout canvas inspection

Inspect one retained XHTML chapter declared pre-paginated before exporting it:

EpubFixedLayoutInspection inspection = book.InspectFixedLayoutPage(0);
foreach (OfficeDrawingQualityIssue issue in inspection.CanvasQuality.Issues) {
    Console.WriteLine(issue.Message);
}

The chapter must declare one viewport with positive numeric width and height. Inspection renders at that viewport with zero margins, using the existing package resource resolver and caller-supplied font/resource limits. It compares rendered element rectangles with the declared page canvas, including content extending beyond the automatic output clip. Explicit authored clips remain in effect. Negative and transformed coordinates are included. Affine effect groups are checked through their contents; empty space in intermediate rendering buffers does not count as overflow. Excessive inspection surfaces fail instead of returning incomplete results. No output image is encoded.

Inspect HasCanvasOverflow, HasTextInkOverflow, TextInkDiagnostics, ClippingDiagnostics, Rendering.Diagnostics, PackageDiagnostics and PreparationDiagnostics together. HasRenderingWarnings summarizes diagnosed rendering loss and package/preparation/inspection warnings. Suppressing package diagnostics for image export does not suppress them in this inspection. Missing raw XHTML, a reflowable chapter, an unsupported viewport or encrypted content rejects inspection; text fallback cannot establish fixed geometry.

Inspect identified layout regions in the same render pass when a page contains positioned text or image containers:

EpubFixedLayoutInspection inspection = book.InspectFixedLayoutRegions(
    0, new[] { "caption", "illustration" });
foreach (EpubFixedLayoutRegionInspection region in inspection.Regions) {
    Console.WriteLine($"{region.ElementId}: box={region.HasOverflow}, ink={region.HasTextInkOverflow}");
}

Region findings compare rendered element rectangles with the region's local border box. Moving or rotating the entire region does not change this local containment; descendant transforms do. Authored clips inside the region remain in effect, while ancestor clips do not redefine its local box. The page-level canvas findings still include the whole scene's transforms and clips. Supply up to 1024 distinct IDs of positioned, floating, flex or grid containers. Missing or duplicate source IDs and targets without one rendered region, including hidden or unsupported targets, reject inspection rather than produce an empty successful result. Region selection does not modify the retained XHTML or the rendered painting.

Each region also exposes TextInkDiagnostics and HasTextInkOverflow for positioned XHTML text in that same local space. A glyph can extend outside its container while both the layout box and the page-level ink check still fit. Descendant transforms are included; region and ancestor transforms do not change local containment. Rectangular and filled path clips on the region and its descendants constrain the measured contours. Ancestor clips do not suppress local ink findings. Regional ink warnings contribute to the enclosing report's HasRenderingWarnings.

HasClippedElementBounds identifies rendered element rectangles that extend outside rectangular scene clips. ClippingDiagnostics gives the source, clip rectangle, clipped axes and finding count. These informational findings include intentional image and background crops; they do not automatically mean the design is wrong. Descendant transforms and clips are included, and an unclipped axis is not treated as a boundary. The automatic output clip is excluded. Inspection rejects pages with more than 1024 scene clips instead of silently truncating the checks.

Path-shaped clips, including rounded overflow boxes, produce HtmlRenderClipGeometryNotInspected warnings. Their precise clipping geometry is not covered by the rectangular element check. Text-ink inspection below can still measure supported filled paths; these are separate evidence scopes.

TextInkDiagnostics separately compares positioned XHTML and embedded vector text glyph outlines with the page canvas, using the shared drawing engine's font fallback, shaping, color-glyph layers, synthetic styles and affine transforms. Decorations use conservative stroke bounds. The measurement uses nominal CSS-pixel geometry at scale 1; it is not a pixel scan. Empty space in a text frame is excluded. Transparent text is ignored. Glyph contours use non-zero winding after supported clipping, so holes and cancelled overlaps do not count as filled ink. Complex outlines that exceed the bounded filled-geometry analysis produce an unmeasured warning. Rectangular clips and filled path clips constrain the measured contours before their bounds are compared with the page or region. Nested, transformed and single-axis clips are supported. Concave, self-intersecting and multi-contour paths retain their even-odd or non-zero fill rule. Rounded rectangles, ellipses and polygons use the shared Drawing renderer's curve flattening at nominal scale 1, including affine transforms. HtmlRenderClippedTextInkBounds informational findings identify text outline or conservative decoration bounds cropped by a supported clip or embedded drawing viewport; review whether the crop is intentional. Automatic page output clipping is excluded; embedded drawing viewports are included because those drawings paint into separate surfaces. Unsupported open paths, non-finite or over-budget geometry and unavailable text outlines produce HtmlRenderTextInkNotInspected warnings rather than an apparently clean result. Supported paths are limited to 512 commands and 512 flattened vertices. Embedded vector inspection follows positioned, baseline, wrapped, rich and shaped vertical text through affine effect groups and supported filled drawing clips, with each drawing surface's fonts and viewport. Baseline, wrapped and rich text reuse the renderer's layout and glyph placement, including mixed sizes, synthetic styles, rotation, alignment and font fallback. Ink inspection measures the retained render output, including ellipsis; it does not establish that every source character remains visible after layout. Vertical text uses the selected shaping provider's vertical advances, the painter's text-box clip and frame transform, color layers and conservative decoration bounds. Missing or unusable vertical shaping remains unmeasured; inspection does not infer geometry from the fallback layout. Shape-only drawings do not produce text warnings, including masked groups, singular transforms and repeated vector patterns. A bounded content check retains unmeasured warnings when those containers contain text, text-bearing masks, outline metadata or embedded images; it does not infer pixel visibility. Text represented by outline metadata, masks, vector patterns and embedded image resources remain explicitly unmeasured; the inspection does not recover text from arbitrary paths or raster pixels. Each vector traversal is limited to 4096 elements and line runs and 64 nested groups/clips. Baseline, wrapped, rich and vertical text input is additionally limited to 65,536 UTF-16 code units across the traversal. Repeated ellipsis measurements have a separate one-million character-work limit per text block and share the traversal work limit. Inspection rejects more than 4096 text runs, 64 nested clips, or excessive contour-clipping work instead of returning a partial report.

This is managed layout evidence. Filled geometry uses a 1e-9 CSS-pixel tolerance for coincident crossings and degenerate vertical intervals; it does not establish pixel coverage, shadows/filters, or pixel visibility within clipped contours or element rectangles. SVG spine inspection, native-reader presentation and accessible reading order require separate qualification. A clean report does not certify a publication.

Generated capability summary

This table is generated from the package-neutral OfficeIMO operation catalog. The detailed source contracts remain authoritative for feature-level behavior and limitations.

Operation Supported Partial Preserved Rejected Unsupported Not applicable
Export 0 5 0 0 0 0

The complete rows for OfficeIMO.Epub.Image are published in the generated operation contract.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on OfficeIMO.Epub.Image:

Package Downloads
OfficeIMO.Workflows

Typed local document workflows that compose first-party OfficeIMO conversion, PDF, and provenance capabilities.

Verify.OfficeIMO

Extends Verify (https://github.com/VerifyTests/Verify) to allow verification via OfficeIMO (https://github.com/EvotecIT/OfficeIMO)

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.5.3 0 10/31/2026
3.5.2 149 10/24/2026
3.5.1 185 10/16/2026
3.4.5 561 10/10/2026
3.4.4 102 9/27/2026
3.4.3 111 9/12/2026
3.4.2 124 9/9/2026
3.4.1 135 9/7/2026
3.4.0 129 9/6/2026
3.3.0 125 9/2/2026
3.2.7 117 8/29/2026
3.2.6 117 8/22/2026
3.2.5 124 8/21/2026
3.2.4 122 8/19/2026
3.2.3 115 8/17/2026
3.2.2 125 8/13/2026
3.2.1 128 8/11/2026
3.2.0 115 8/7/2026
3.1.1 124 8/7/2026
3.1.0 133 8/6/2026
Loading failed