Allors.Documents 4.0.0

Prefix Reserved
dotnet add package Allors.Documents --version 4.0.0
                    
NuGet\Install-Package Allors.Documents -Version 4.0.0
                    
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="Allors.Documents" Version="4.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Allors.Documents" Version="4.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Allors.Documents" />
                    
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 Allors.Documents --version 4.0.0
                    
#r "nuget: Allors.Documents, 4.0.0"
                    
#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 Allors.Documents@4.0.0
                    
#: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=Allors.Documents&version=4.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Allors.Documents&version=4.0.0
                    
Install as a Cake Tool

Allors Documents

Embed template tags inside OpenDocument texts: write the template in LibreOffice Writer, bind it to a model, render the document.

Status

Build Status

Packages

Package Holds
Allors.Documents The template and its renderer, the tag language, the inspection, Validate, the model contracts (IShape, IResolver) and the dictionary shape and resolver. Targets netstandard2.0 and net10.0, is trimmable and AOT-compatible, uses no reflection and has no dependencies.
Allors.Documents.Reflection OpenDocumentTemplate<T>, ReflectionShape and ReflectionResolver: templates over plain classes and dictionaries, their members read through reflection.
Allors.Documents.Barcodes The picture renderers code128, ean13 and qr: a barcode of the value's text, drawn with ZXing.Net for the frame that shows it.
Allors.Documents.Imaging PictureScaling, a picture processor that scales a picture down to its frame with SkiaSharp, turns a photo upright and keeps its format.

Allors.Documents is all a render needs. The other packages are optional: reflection for an application without a resolver of its own, barcodes and imaging for one that draws no barcodes and scales no pictures of its own. An application that has those capabilities wraps its own code as a renderer or picture processor, which Renderers and picture processing shows, and needs neither package.

Usage

using Allors.Documents;
using Allors.Documents.Reflection;

var template = new OpenDocumentTemplate<InvoiceModel>(templateBytes);
RenderResult result = template.Render(model);

File.WriteAllBytes("invoice.odt", result.Document);
foreach (Finding finding in result.Findings)
{
    Console.WriteLine(finding); // error: <$Invoice.Totl>: Invoice has no member Totl (content.xml paragraph 12 "Total <$Invoice.Totl>")
}

A template is read once and rendered any number of times, from any thread. A render never throws for what the template says: a value the model cannot give prints blank, and the findings say which tag and where. Validate reports the same before any data exists.

Documentation

The documentation is written for template authors, developers and maintainers. The pages live under docs/ in this repository; the links go to their sources on GitHub.

For template authors: Write a template · Tags · Formatting · Pictures · Maps · Findings

For developers: Render your first document · Validate templates · Resolve your own model · Renderers and picture processing · API · Design

For everyone: Terminology · Documentation index

For maintainers: Architecture · Releasing · Writing documentation · Documentation website

Changes are recorded in CHANGELOG.md. Agents follow AGENTS.md, which points to the same pages.

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 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.  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 was computed.  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.
  • .NETStandard 2.0

    • No dependencies.
  • net10.0

    • No dependencies.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Allors.Documents:

Package Downloads
Allors.Documents.Reflection

Bind Allors Documents templates to plain classes and dictionaries through reflection.

Allors.Documents.Imaging

Scale the pictures of Allors Documents templates to their frames.

Allors.Documents.Barcodes

Draw barcodes into the picture frames of Allors Documents templates.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.0.0 218 10/19/2026
3.2.0 167 10/16/2026
3.1.0 226 10/15/2026
3.0.0 188 10/15/2026
2.1.0 217 10/14/2026
2.0.0 172 10/14/2026
1.2.0 182 10/13/2026
1.2.0-rc.1 53 10/13/2026
1.0.10 20,576 3/11/2024
1.0.5 270 3/11/2024
1.0.4 13,750 4/19/2022
1.0.3 19,002 6/18/2020
1.0.0 2,588 4/15/2020