Rustaveli.Pdf.Raster
0.2.0
.NET 10.0
This package targets .NET 10.0. The package is compatible with this framework or higher.
.NET Standard 2.0
This package targets .NET Standard 2.0. The package is compatible with this framework or higher.
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" />
<PackageReference Include="Rustaveli.Pdf.Raster" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=Rustaveli.Pdf.Raster&version=0.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

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
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
- The documentation, starting with getting started
- API reference
- Coming from QuestPDF, and how the two libraries relate: Rustaveli.Pdf and QuestPDF
- Features and known limitations
- Changelog
Licence
MIT — see LICENSE. The bundled Noto Sans is under the SIL Open Font License.
| 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 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
- Rustaveli.Pdf (= 0.2.0)
- SkiaSharp (>= 4.153.0)
- SkiaSharp.NativeAssets.Linux (>= 4.153.0)
-
net10.0
- Rustaveli.Pdf (= 0.2.0)
- SkiaSharp (>= 4.153.0)
- SkiaSharp.NativeAssets.Linux (>= 4.153.0)
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 |