FlexRender.ImageSharp.Render 0.8.0

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

FlexRender

NuGet NuGet Downloads CI License: MIT

A .NET library for rendering images from YAML templates with a full CSS flexbox layout engine. Perfect for generating receipts, labels, tickets, and structured documents.

Features

  • YAML Templates -- define complex image layouts in readable YAML format
  • Full CSS Flexbox -- direction, wrapping, justify, align, grow/shrink/basis, min/max constraints, auto margins
  • RTL Support -- right-to-left layout with text-direction: rtl, logical alignment (start/end), row mirroring
  • Template Engine -- variables ({{name}}), loops (type: each), conditionals (type: if with 13 operators)
  • Inline Expressions -- arithmetic (+, -, *, /), null coalesce (??), unary negation, parentheses
  • Filters -- | currency, | number, | format, | upper, | lower, | trim, | truncate
  • Tables -- type: table with dynamic rows from data arrays, column alignment, header styling, row/column gaps
  • Visual Effects -- box-shadow, background: linear-gradient(...), opacity on any element
  • Rich Content -- text, images, SVG, QR codes (FlexRender.QrCode.*), barcodes (FlexRender.Barcode.*), separators
  • HarfBuzz Shaping -- optional FlexRender.HarfBuzz package for Arabic/Hebrew glyph shaping
  • SVG Output -- render templates to SVG vector format via FlexRender.Svg (meta) or FlexRender.Svg.Render
  • ImageSharp Backend -- pure .NET rendering via FlexRender.ImageSharp (meta) or FlexRender.ImageSharp.Render, zero native dependencies
  • Multiple Formats -- PNG, JPEG (quality 1-100), BMP (6 color modes), Raw pixels
  • Per-Call Options -- antialiasing, font hinting, text rendering mode per render call
  • AOT Compatible -- no reflection, works with Native AOT publishing
  • CLI Tool -- render, validate, watch, and debug templates from the command line

Examples

Receipt Dynamic Receipt Ticket Label
Receipt Dynamic Ticket Label
Table Invoice Expressions Visual Effects
Table Invoice Expressions Visual Effects

<details> <summary>All Features Showcase (click to expand)</summary>

Showcase

</details>

<details> <summary>Renderer Comparison (click to expand)</summary>

Skia ImageSharp SVG
Skia ImageSharp SVG output
Native rendering, gradients, shadows, SVG elements Pure .NET, zero native deps Vector output, scalable

</details>

Installation

# All-in-one meta package (all backends)
dotnet add package FlexRender

# Skia backend (meta: renderer + providers)
dotnet add package FlexRender.Skia

# SVG backend (meta: renderer + providers)
dotnet add package FlexRender.Svg

# Pure .NET backend (meta: renderer + providers, no native dependencies)
dotnet add package FlexRender.ImageSharp

# Render-only packages (no providers)
dotnet add package FlexRender.Skia.Render
dotnet add package FlexRender.Svg.Render
dotnet add package FlexRender.ImageSharp.Render

# Optional providers (pick the renderer you use)
dotnet add package FlexRender.QrCode.Skia.Render
dotnet add package FlexRender.QrCode.Svg.Render
dotnet add package FlexRender.QrCode.ImageSharp.Render
dotnet add package FlexRender.Barcode.Skia.Render
dotnet add package FlexRender.Barcode.Svg.Render
dotnet add package FlexRender.Barcode.ImageSharp.Render
dotnet add package FlexRender.SvgElement.Skia.Render
dotnet add package FlexRender.SvgElement.Svg.Render

# Meta packages (all renderers for a feature)
dotnet add package FlexRender.QrCode
dotnet add package FlexRender.Barcode
dotnet add package FlexRender.SvgElement

# CLI tool
dotnet tool install -g flexrender-cli

Linux / Docker: The Skia backend requires native libraries. Add SkiaSharp.NativeAssets.Linux to avoid DllNotFoundException: libSkiaSharp. For HarfBuzz text shaping, also add HarfBuzzSharp.NativeAssets.Linux. The ImageSharp backend has no native dependencies.

Quick Start

1. Create a template (receipt.yaml):

canvas:
  fixed: width
  width: 300
  background: "#ffffff"

layout:
  - type: flex
    padding: 20
    gap: 10
    children:
      - type: text
        content: "{{shopName}}"
        font: bold
        size: 1.5em
        align: center

      - type: each
        array: items
        as: item
        children:
          - type: flex
            direction: row
            justify: space-between
            children:
              - type: text
                content: "{{item.name}}"
              - type: text
                content: "{{item.price | currency}} $"

      - type: text
        content: "Total: {{total | currency}} $"
        font: bold
        align: right

2. Render with code (Skia backend):

var render = new FlexRenderBuilder()
    .WithSkia(skia => skia.WithQr().WithBarcode())
    .Build();

var data = new ObjectValue
{
    ["shopName"] = "My Shop",
    ["total"] = 1500,
    ["items"] = new ArrayValue(
        new ObjectValue { ["name"] = "Product 1", ["price"] = 500 },
        new ObjectValue { ["name"] = "Product 2", ["price"] = 1000 })
};

byte[] png = await render.RenderFile("receipt.yaml", data);

For ImageSharp QR/barcode support, install FlexRender.ImageSharp (meta) or FlexRender.QrCode.ImageSharp.Render and FlexRender.Barcode.ImageSharp.Render.

Or with ImageSharp (pure .NET, no native deps):

var render = new FlexRenderBuilder()
    .WithImageSharp(imageSharp => imageSharp.WithQr().WithBarcode())
    .Build();

byte[] png = await render.RenderFile("receipt.yaml", data);

3. Or use the CLI:

flexrender render receipt.yaml -d data.json -o receipt.png

# Use ImageSharp backend (no native dependencies)
flexrender render receipt.yaml -d data.json -o receipt.png --backend imagesharp

Documentation

Page Description
Getting Started Installation, first template, rendering approaches
Template Syntax Canvas, all element types, tables, common properties
Element Reference Complete property reference for all element types
Template Expressions Variables, loops, conditionals, inline expressions, filters
Flexbox Layout Direction, justify, align, wrapping, grow/shrink
Render Options Per-call antialiasing, font hinting, format options
CLI Reference Commands, options, AOT publishing
API Reference IFlexRender, builder, DI, types
Visual Reference Visual effects, gradients, shadows, opacity
Contributing Build, test, architecture, conventions

For LLM Agents

  • llms.txt -- concise project overview (~450 lines)
  • llms-full.txt -- comprehensive reference (~1250 lines)
  • AGENTS.md -- build commands, coding conventions

License

MIT

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

NuGet packages (3)

Showing the top 3 NuGet packages that depend on FlexRender.ImageSharp.Render:

Package Downloads
FlexRender.Barcode.ImageSharp.Render

Barcode generation for FlexRender (ImageSharp renderer).

FlexRender.QrCode.ImageSharp.Render

QR code generation for FlexRender (ImageSharp renderer).

FlexRender.ImageSharp

ImageSharp backend meta-package for FlexRender (renderer + providers).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.8.0 100 2/12/2026
0.7.2 132 2/11/2026
0.7.1 137 2/11/2026
0.7.0 140 2/11/2026
0.6.0 141 2/10/2026
0.5.2 241 2/10/2026