Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified docs/assets/aspnet/invoice.pdf
Binary file not shown.
Binary file modified docs/assets/aspnet/invoice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/aspnet/project.zip
Binary file not shown.
20 changes: 10 additions & 10 deletions docs/assets/aspnet/source.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"source": "https://github.com/fullbleed-engine/docs/tree/main/examples/aspnet",
"framework": "net10.0",
"package": "FullBleed.DotNet",
"packageVersion": "0.1.4",
"projectZipSha256": "7a9d054b017c095c14d0505f9baa2aae43d32988df0005be9703e3ace59d1eea",
"packageVersion": "0.1.5",
"projectZipSha256": "32682ad7a59bdaca0f9c89f40cfdb5295470795d648bb169ed117d0c0cb4c713",
"files": [
{
"path": "Assets/fonts/BebasNeue-OFL.txt",
Expand Down Expand Up @@ -57,13 +57,13 @@
},
{
"path": "Assets/invoice.png",
"bytes": 107399,
"sha256": "b76f6db748fb47b928c93c12fe788de94a0f5d8da4bb350f644a58705c163cf7"
"bytes": 107272,
"sha256": "72420749ccc3deaa8025daf7baffcdf79be716b6e8e93ed605effebed01e86c7"
},
{
"path": "FullbleedWeb.csproj",
"bytes": 534,
"sha256": "493b38713bc78bc357a5e32bd58ea1874400e2f56896b007678e0cbe62fb5cde"
"sha256": "2bc53bcbbc531d70bd1c1807b79cb45802963897f062994b50b401d7ae31e6c7"
},
{
"path": "InvoiceRenderer.cs",
Expand All @@ -82,8 +82,8 @@
},
{
"path": "README.md",
"bytes": 2459,
"sha256": "4c1d6e152dc8933c68bdad18dadb94f603257c8a34c7676d79a6cdb2706244f3"
"bytes": 2460,
"sha256": "b03e0964a7fe57921a94729b0b7b3b304fa3bbeb623be4956345141c647921a6"
},
{
"path": "global.json",
Expand All @@ -93,11 +93,11 @@
{
"path": "packages.lock.json",
"bytes": 305,
"sha256": "5d2cb65ec0a0e20e0d778031a972b2c0721af071ac203dc094deb4115513f873"
"sha256": "afc891b007fd4475a4bd71b62f8942e930e9c15d0c54145e249ab6dd0597b35c"
}
],
"outputs": {
"invoice.pdf": "14231c2df650d409828765b93dc528ea0f5dcf76cce99b0ec2d88437fa101ab8",
"invoice.png": "b76f6db748fb47b928c93c12fe788de94a0f5d8da4bb350f644a58705c163cf7"
"invoice.pdf": "6f898f935a5491572e5b6222428cc861c8d131694a73c441036e8545f477367f",
"invoice.png": "72420749ccc3deaa8025daf7baffcdf79be716b6e8e93ed605effebed01e86c7"
}
}
14 changes: 7 additions & 7 deletions docs/assets/aspnet/verification.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
{
"ok": true,
"checkedAt": "2026-10-05T23:51:58.635000+00:00",
"checkedAt": "2026-10-06T18:50:48.109029+00:00",
"platform": "Windows",
"architecture": "AMD64",
"runtime": "10.0.12",
"framework": "net10.0",
"package": "FullBleed.DotNet",
"packageVersion": "0.1.4",
"engineVersion": "2.5.8",
"packageSha256": "543a709296e18f4ced53cfe154f2b526a8f4416c7cad266dc58b6572f56d5df6",
"packageVersion": "0.1.5",
"engineVersion": "2.5.10",
"packageSha256": "9ef3696b303c82679e4cb0ad4f0ab2da9d0c10f7f73283fd443f49dd8d459eef",
"freshNuGetCache": true,
"projectZipSha256": "7a9d054b017c095c14d0505f9baa2aae43d32988df0005be9703e3ace59d1eea",
"pdfSha256": "14231c2df650d409828765b93dc528ea0f5dcf76cce99b0ec2d88437fa101ab8",
"previewSha256": "b76f6db748fb47b928c93c12fe788de94a0f5d8da4bb350f644a58705c163cf7",
"projectZipSha256": "32682ad7a59bdaca0f9c89f40cfdb5295470795d648bb169ed117d0c0cb4c713",
"pdfSha256": "6f898f935a5491572e5b6222428cc861c8d131694a73c441036e8545f477367f",
"previewSha256": "72420749ccc3deaa8025daf7baffcdf79be716b6e8e93ed605effebed01e86c7",
"commands": [
"restore",
"publish",
Expand Down
Binary file modified docs/assets/showcase/invoice-dotnet.pdf
Binary file not shown.
Binary file modified docs/assets/showcase/invoice-dotnet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 16 additions & 12 deletions docs/getting-started/dotnet.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Install FullBleed.DotNet from NuGet, render a PDF from C#, and run
---
# Generate PDFs from C# and .NET

[`FullBleed.DotNet`](https://www.nuget.org/packages/FullBleed.DotNet/0.1.4)
[`FullBleed.DotNet`](https://www.nuget.org/packages/FullBleed.DotNet/0.1.5)
brings Fullbleed's Rust rendering engine into a .NET process. Use static HTML
and CSS to create invoices, reports, and variable-data documents. Native
rendering needs neither Python nor a browser.
Expand All @@ -16,7 +16,7 @@ With the .NET 10 SDK installed:
```bash
dotnet new console -n InvoiceDemo --framework net10.0
cd InvoiceDemo
dotnet add package FullBleed.DotNet --version 0.1.4
dotnet add package FullBleed.DotNet --version 0.1.5
```

Replace `Program.cs` with:
Expand All @@ -40,12 +40,14 @@ Console.WriteLine($"Created invoice.pdf: {inspection.PageCount} page(s).");

Run `dotnet run` and open `invoice.pdf` in the project directory. You can also
return the bytes from an HTTP handler or write them to your own storage.
The first example uses standard PDF fonts; register explicit font files for
your document's typography and character coverage.
The first example uses standard PDF fonts. Register explicit font files for
your document's typography, character coverage, and portable PNG previews.
Native previews of unembedded standard fonts use host-font fallbacks and can
vary between machines; the designed example below embeds its fonts.

The package's managed library targets `net8.0`; your application can target
`net8.0`, `net9.0`, or `net10.0`. It contains native libraries for Windows x64,
Linux x64, Intel macOS, and Apple Silicon macOS. It pins Fullbleed 2.5.8.
Linux x64, Intel macOS, and Apple Silicon macOS. It pins Fullbleed 2.5.10.
The managed assembly has no third-party NuGet runtime dependencies.

Use .NET 10 LTS for a new application. Microsoft lists November 10, 2026 as
Expand All @@ -66,11 +68,13 @@ are fictional.

[Open the PDF generated from C#](../assets/showcase/invoice-dotnet.pdf).

Version 0.1.4 fixes regular font selection when an italic face is registered first.
In the release comparison, the invoice uses its intended regular brand face and is **40,449 bytes**,
compared with 34,542 bytes for the earlier, incorrectly italic result. Text is unchanged;
the corrected PDF and pixels match an explicit regular-face control.
[Inspect the release evidence](https://github.com/fullbleed-engine/fullbleed-dotnet/releases/tag/v0.1.4).
Version 0.1.5 fixes wrapping after styled inline text and the widths of tracked
labels in flex and inline-block layouts. The release checks 54 layout cases
through ordinary and compiled rendering, including a comparison that rejects
44 defective cases in the previous package. The invoice retains its intended
regular brand face; its corrected spacing is checked against a reviewed PDF
and preview baseline. Review saved outputs when upgrading affected templates.
[Inspect the release evidence](https://github.com/fullbleed-engine/fullbleed-dotnet/releases/tag/v0.1.5).

The earlier [0.1.3 comparison](https://github.com/fullbleed-engine/fullbleed-dotnet/releases/tag/v0.1.3)
measured font compaction from 81,227 to 34,542 bytes for that older output. Those
Expand Down Expand Up @@ -143,8 +147,8 @@ For a web application, download the [ASP.NET Core PDF starter](../guides/aspnet-
It includes a download page, styled invoice, private responses, and checks against
the published application artifact.

[.NET API reference](https://github.com/fullbleed-engine/fullbleed-dotnet/blob/v0.1.4/docs/api.md)
· [LINQ and variable-data example](https://github.com/fullbleed-engine/fullbleed-dotnet/tree/v0.1.4/samples/FullBleed.DotNet.LinqVdp)
[.NET API reference](https://github.com/fullbleed-engine/fullbleed-dotnet/blob/v0.1.5/docs/api.md)
· [LINQ and variable-data example](https://github.com/fullbleed-engine/fullbleed-dotnet/tree/v0.1.5/samples/FullBleed.DotNet.LinqVdp)
· [CSS coverage](../css-coverage.md)
· [More document designs](../examples.md)
· [Report a .NET issue](https://github.com/fullbleed-engine/fullbleed-dotnet/issues)
4 changes: 2 additions & 2 deletions docs/guides/aspnet-pdf.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ dotnet run -c Release --no-restore -- --urls http://127.0.0.1:5080
Open `http://127.0.0.1:5080` and choose **Download sample PDF**. The browser
downloads `invoice-NS-1042.pdf` from `/invoices/NS-1042/pdf` and stays on the page.

The lockfile pins the public `FullBleed.DotNet` **0.1.4** package, which contains
engine **2.5.8**. For a console app or the broader native API, use the
The lockfile pins the public `FullBleed.DotNet` **0.1.5** package, which contains
engine **2.5.10**. For a console app or the broader native API, use the
[C# and .NET quickstart](../getting-started/dotnet.md).

## Return PDF bytes as an attachment
Expand Down
4 changes: 2 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ Pick your application stack. Generate a PDF locally or download one from the bro
```bash
dotnet new console -n InvoiceDemo --framework net10.0
cd InvoiceDemo
dotnet add package FullBleed.DotNet --version 0.1.4
dotnet add package FullBleed.DotNet --version 0.1.5
```

Replace `Program.cs` with:
Expand Down Expand Up @@ -218,7 +218,7 @@ Pick your application stack. Generate a PDF locally or download one from the bro

Open `invoice.pdf`. This first example uses standard PDF fonts. Existing .NET 8 and 9 applications can use the same package; see the guide for platform support and explicit fonts.

[C# and .NET quickstart →](getting-started/dotnet.md) · [LINQ and variable data](https://github.com/fullbleed-engine/fullbleed-dotnet/tree/v0.1.4/samples/FullBleed.DotNet.LinqVdp)
[C# and .NET quickstart →](getting-started/dotnet.md) · [LINQ and variable data](https://github.com/fullbleed-engine/fullbleed-dotnet/tree/v0.1.5/samples/FullBleed.DotNet.LinqVdp)

## Pick a document to build

Expand Down
Binary file modified examples/aspnet/Assets/invoice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion examples/aspnet/FullbleedWeb.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FullBleed.DotNet" Version="0.1.4" />
<PackageReference Include="FullBleed.DotNet" Version="0.1.5" />
<Content Include="Assets/**/*" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
</Project>
2 changes: 1 addition & 1 deletion examples/aspnet/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Fullbleed PDF downloads in ASP.NET Core

A .NET 10 Minimal API that generates a fictional Northstar invoice from bundled HTML, CSS, and fonts. Uses the public `FullBleed.DotNet` 0.1.4 NuGet package (engine 2.5.8).
A .NET 10 Minimal API that generates a fictional Northstar invoice from bundled HTML, CSS, and fonts. Uses the public `FullBleed.DotNet` 0.1.5 NuGet package (engine 2.5.10).

```sh
dotnet restore --locked-mode
Expand Down
6 changes: 3 additions & 3 deletions examples/aspnet/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"net10.0": {
"FullBleed.DotNet": {
"type": "Direct",
"requested": "[0.1.4, )",
"resolved": "0.1.4",
"contentHash": "J0oyvPddrDRBk3sYW7UC4w+pcc1bfUQs3smaXlfPwn8xAVDjEg7mLskTf2yYHTwVskgigLCPLhneX8+vo2gKsw=="
"requested": "[0.1.5, )",
"resolved": "0.1.5",
"contentHash": "JQenfVuPx1Tn5O8fZIz28rRFobP/51LPH5N1ROdZfnrVMeBZA47W2moSUwYtn63p1qfrGLElQlxckXKQw7CKRg=="
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion examples/dotnet/NorthstarInvoice.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FullBleed.DotNet" Version="0.1.4" />
<PackageReference Include="FullBleed.DotNet" Version="0.1.5" />
<None Include="../../docs/assets/showcase/invoice.html" Link="Assets/invoice.html" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../docs/assets/showcase/invoice.css" Link="Assets/invoice.css" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../docs/assets/playground/fonts/*" Link="Assets/fonts/%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
Expand Down
2 changes: 1 addition & 1 deletion tools/build_aspnet_starter.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def build():
(ASSETS / "project.zip").write_bytes(archive)
manifest = {
"source": "https://github.com/fullbleed-engine/docs/tree/main/examples/aspnet",
"framework": "net10.0", "package": "FullBleed.DotNet", "packageVersion": "0.1.4",
"framework": "net10.0", "package": "FullBleed.DotNet", "packageVersion": "0.1.5",
"projectZipSha256": digest(archive),
"files": [{"path": name, "bytes": len(data), "sha256": digest(data)} for name, data in files.items()],
"outputs": {name: digest((ASSETS / name).read_bytes()) for name in ["invoice.pdf", "invoice.png"]},
Expand Down
2 changes: 1 addition & 1 deletion tools/verify_aspnet_starter.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ def concurrent_request(_):
package = installed / f"fullbleed.dotnet.{version}.nupkg"
provenance = json.loads((installed / "native-provenance.json").read_text(encoding="utf-8"))
engine = next(item for item in provenance["dependencies"] if item["name"] == "fullbleed")
assert version == "0.1.4" and engine["version"] == "2.5.8"
assert version == "0.1.5" and engine["version"] == "2.5.10"
report = {
"ok": True, "checkedAt": datetime.now(timezone.utc).isoformat(),
"platform": platform.system(), "architecture": platform.machine(),
Expand Down
Loading