Rustaveli.Pdf.Raster 0.2.0

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

CI CodeQL OpenSSF Scorecard NuGet

An invoice, made by the quick start below

Why Rustaveli.Pdf

  • Free, for everyone. MIT-licensed: use it in commercial and closed-source software, with no revenue limits, licence keys or paid tiers.
  • Fully featured. Invoices, reports and statements; tables that run across pages; text in both directions and in complex scripts; images and vector artwork; PDF/A archives, accessible tagged PDF and password protection; merging and stamping existing files; and a live preview while you write.
  • Plain .NET. The core package is managed code with no native dependencies, for .NET 10 and .NET Standard 2.0 (.NET Framework 4.7.2 and later).

Install

dotnet add package Rustaveli.Pdf
Package Adds
Rustaveli.Pdf Layout, text, images and PDF export: everything most documents need
Rustaveli.Pdf.Raster Pages as PNG, JPEG or WebP, SVG pages and XPS; image recompression
Rustaveli.Pdf.Shaping Arabic, Hebrew points, and Indic and South-East Asian scripts
Rustaveli.Pdf.Operations Existing PDF files: merging, stamping, attaching, protecting
Rustaveli.Pdf.Preview A live preview in the browser, redrawn on hot reload

Quick start

This makes the invoice above:

using Rustaveli.Pdf;

(string Item, string Quantity, string Amount)[] lines =
[
    ("Design review", "4", "1,600.00"),
    ("Implementation", "12", "7,200.00"),
    ("Support, one month", "1", "450.00"),
];

Ink blue = Ink.Hex("#1565C0");

Document invoice = Document.Compose(composition => composition.Section(section =>
{
    section.Trim = PaperSizes.A5;
    section.Margins = Sides.All(40);
    section.DefaultType = TypeStyle.Default.WithPointSize(10);

    section.Body().Stack(stack =>
    {
        stack.SpaceBetween(20);

        stack.Add().Text(text =>
        {
            text.Line("Invoice INV-0042").PointSize(22).Bold().Ink(blue);
            text.Line("Issued 29 September 2026, due in 30 days");
        });

        stack.Add().Table(table =>
        {
            table.Columns(columns =>
            {
                columns.Share();
                columns.Fixed(40);
                columns.Fixed(70);
            });

            table.HeaderRows(header =>
            {
                header.Cell().Fill(blue).Inset(6).Text(text => text.Run("Item").Bold().Ink(Ink.White));
                header.Cell().Fill(blue).Inset(6).FlushRight().Text(text => text.Run("Qty").Bold().Ink(Ink.White));
                header.Cell().Fill(blue).Inset(6).FlushRight().Text(text => text.Run("Amount").Bold().Ink(Ink.White));
            });

            foreach ((string item, string quantity, string amount) in lines)
            {
                table.Cell().StrokeBottom(0.5f).Inset(6).Text(item);
                table.Cell().StrokeBottom(0.5f).Inset(6).FlushRight().Text(quantity);
                table.Cell().StrokeBottom(0.5f).Inset(6).FlushRight().Text(amount);
            }
        });

        stack.Add().FlushRight().Text(text => text.Run("Total due 9,250.00").PointSize(14).Bold());
    });
}));

invoice.ExportPdf("invoice.pdf");

Highlights

  • Layout — stacks, columns, tables with repeated header rows and spanning cells, lists, grids and flowing columns; content flows across as many pages as it needs, with running heads and feet and page numbers.
  • Typography — OpenType features and kerning, fallback fonts per character, text in both directions, complex scripts with the Shaping package, and Noto Sans built in as the default typeface, so Latin, Greek and Cyrillic text looks the same on every machine.
  • Images and artwork — JPEG and PNG embedded as they are, and SVG or drawn paths kept as vectors.
  • Standards — PDF/A-2 and PDF/A-3, tagged PDF and PDF/UA for accessibility, and encryption up to AES-256, each checked in the tests by veraPDF and qpdf.
  • Existing files — merge, overlay and stamp, attach files (electronic invoices included), protect and linearise.
  • Tooling — a live preview in the browser that redraws as you edit, with an inspector that opens the line of code behind any frame.
  • Small files — fonts subset to the glyphs used and images embedded as encoded: an 85-page report in 171 KB (performance).

Documentation

Licence

MIT — see LICENSE. The bundled Noto Sans is under the SIL Open Font License.

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.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Rustaveli.Pdf.Raster:

Package Downloads
Rustaveli.Pdf.Preview

Shows a Rustaveli.Pdf document in the browser as it is written, redrawn on every hot reload under dotnet watch, with layout failures explained on the page and an inspector that leads from any frame to the line of code that made it.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0 38 9/30/2026