zPdfGenerator.Charts
0.2.0
dotnet add package zPdfGenerator.Charts --version 0.2.0
NuGet\Install-Package zPdfGenerator.Charts -Version 0.2.0
<PackageReference Include="zPdfGenerator.Charts" Version="0.2.0" />
<PackageVersion Include="zPdfGenerator.Charts" Version="0.2.0" />
<PackageReference Include="zPdfGenerator.Charts" />
paket add zPdfGenerator.Charts --version 0.2.0
#r "nuget: zPdfGenerator.Charts, 0.2.0"
#:package zPdfGenerator.Charts@0.2.0
#addin nuget:?package=zPdfGenerator.Charts&version=0.2.0
#tool nuget:?package=zPdfGenerator.Charts&version=0.2.0
zPdfGenerator.Charts
Extension package for zPdfGenerator that adds chart placeholders (charts) for PDF generation from HTML using OxyPlot (SVG) + iText.
The goal of this project is to generate deterministic, vector-based charts that render consistently on Windows and Linux, following this pipeline:
Data → SVG (OxyPlot) → HTML → PDF (iText)
Features
- Vector charts (SVG)
- Pie charts
- Color palette support
- Correct culture handling (
es-ES,en-US, etc.) - PDF-safe layouts (no browser-dependent rendering)
- Clean public API (internal helpers are not exposed to consumers)
Related packages
This project extends:
zPdfGenerator
Main dependencies:
OxyPlot.CoreiText.Html2Pdf
Installation
dotnet add package zPdfGenerator.Charts
Basic usage
1️ Generator configuration
Action<FluidHtmlPdfGeneratorBuilder<CorporateReport>> config = b => b
.UseTemplatePath("template.html")
.UseCulture(new CultureInfo("es-ES"))
.SetData(report)
.AddPieChart(
name: "chartSvg",
map: r => r.TableRows,
label: i => i.Concept,
value: i => Convert.ToDouble(i.Value),
title: "Pie chart example",
legend: "Distribution",
paletteHex: new[] { "#2563EB", "#F59E0B", "#16A34A" }
);
2️ PDF generation
var pdfBytes = generator.GeneratePdf(config);
Usage in HTML template
<section class="chart-section">
<h2>Performance chart</h2>
<div class="z-chart">
{{ chartSvg | raw }}
</div>
</section>
Recommended CSS (PDF-friendly)
.chart-section {
page-break-inside: avoid;
}
.z-chart {
border: 1px solid #ccc;
padding: 12px;
background: #fafafa;
}
.z-chart svg {
width: 100%;
height: auto;
display: block;
}
Configuration Tips
- Use
FillColorHexfor a single-color bar chart; usePaletteHexfor grouped or multi-series charts. LabelFormataccepts standard numeric formats (e.g.{0:0.##}).- Prefer explicit
CultureInfowhen rendering numbers with decimal separators.
Culture and numeric formatting
OxyPlot formats labels using CultureInfo.CurrentCulture at render time.
This project includes an internal helper called CultureScope that ensures the correct culture is applied during SVG export:
using (CultureScope.Use(culture))
{
exporter.Export(model, stream);
}
This guarantees:
- Correct decimal separators
- Correct percentage formatting
- Independence from the operating system culture
Limitations
- Charts are static SVGs (no interactivity or animation).
- Very large datasets can produce large SVGs; consider sampling or aggregating data.
Testing
dotnet test tests/zPdfGenerator.Tests/zPdfGenerator.Tests.csproj
License
MIT License © Juanjo Jiménez Zorrilla
Roadmap
- Bar charts
- Line charts
- Automatic HTML legends
Designed for serious, reproducible, cross-platform reporting.
| 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 was computed. 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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- OxyPlot.Core (>= 2.2.0)
- zPdfGenerator (>= 0.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.