SolarBlazorDocs.Abstractions
10.0.0
dotnet add package SolarBlazorDocs.Abstractions --version 10.0.0
NuGet\Install-Package SolarBlazorDocs.Abstractions -Version 10.0.0
<PackageReference Include="SolarBlazorDocs.Abstractions" Version="10.0.0" />
<PackageVersion Include="SolarBlazorDocs.Abstractions" Version="10.0.0" />
<PackageReference Include="SolarBlazorDocs.Abstractions" />
paket add SolarBlazorDocs.Abstractions --version 10.0.0
#r "nuget: SolarBlazorDocs.Abstractions, 10.0.0"
#:package SolarBlazorDocs.Abstractions@10.0.0
#addin nuget:?package=SolarBlazorDocs.Abstractions&version=10.0.0
#tool nuget:?package=SolarBlazorDocs.Abstractions&version=10.0.0
SolarBlazorDocs.Abstractions
Núcleo de SolarBlazorDocs: convierte cualquier componente Blazor en un documento renderizándolo a HTML en memoria y delegando la conversión en un motor intercambiable (patrón Strategy). Este paquete contiene los contratos, las opciones, el renderizador Blazor→HTML, el servicio orquestador, los resolvers de motores y componentes auxiliares.
Los motores concretos se distribuyen aparte:
- SolarBlazorDocs.Pdf — motor PDF (Chromium/PuppeteerSharp).
- SolarBlazorDocs.Excel — motor Excel (ClosedXML).
Instalación
dotnet add package SolarBlazorDocs.Abstractions
Por sí solo no trae ningún motor: registra al menos uno (ver los paquetes .Pdf / .Excel).
Registro
using SolarBlazorDocs.Extensions;
builder.Services.AddSolarBlazorDocs(docs =>
{
docs.AddPuppeteerEngine(); // requiere SolarBlazorDocs.Pdf
docs.AddClosedXmlExcelEngine(); // requiere SolarBlazorDocs.Excel
});
AddSolarBlazorDocs registra el renderizador, los resolvers y el servicio principal IBlazorDocsService. Los motores se añaden en el Action<SolarBlazorDocsBuilder>.
Servicio principal: IBlazorDocsService
// Componente Blazor -> PDF
byte[] pdf = await docs.ComponentToPdfAsync<MiComponente>(parametros, pdfOptions);
// Componente Blazor -> Excel (a partir de sus tablas)
byte[] xlsx = await docs.ComponentToExcelAsync<MiComponente>(parametros, excelOptions);
// Solo el HTML (depuración / previsualización)
string html = await docs.ComponentToHtmlAsync(typeof(MiComponente), parametros, culture: "es-ES");
// A partir de un HTML ya preparado, sin pasar por Blazor
byte[] pdf2 = await docs.HtmlToPdfAsync(html, pdfOptions);
byte[] xlsx2 = await docs.HtmlToExcelAsync(html, excelOptions);
parametros es un IDictionary<string, object?> con los [Parameter] del componente (p. ej. ["Model"] = model).
Opciones
PdfRenderOptions:
| Propiedad | Descripción |
|---|---|
Format |
Tamaño de página (A4, A3, A5, Letter, Legal, Tabloid). |
Orientation |
Portrait / Landscape. |
Margins |
Márgenes CSS (PageMargins.Uniform("2cm"), .None, …). |
PrintBackground |
Imprime fondos/colores CSS. |
Scale |
Escala del contenido (1.0 = 100%). |
HeaderHtml / FooterHtml |
Plantillas de encabezado/pie repetidas por página. |
PageRanges |
Rango de páginas ("1-5, 8"). |
Culture |
Cultura del documento (i18n). |
Engine |
Nombre del motor a usar (por defecto puppeteer). |
ExcelRenderOptions: SheetName, FirstRowAsHeader, AutoFitColumns, IncludeAllTables, HeaderBackgroundColor, Culture, Engine.
Internacionalización (i18n)
Al indicar Culture, el renderizador fija CultureInfo.CurrentCulture/CurrentUICulture durante el render: afecta al formato de fechas y números y a la localización por IStringLocalizer (.resx). Así, el mismo componente genera el documento en el idioma solicitado.
await docs.ComponentToPdfAsync<Factura>(p, new PdfRenderOptions { Culture = "en-US" });
Motores personalizados (patrón Strategy)
Un motor implementa IPdfEngine o IExcelEngine y se identifica por Name:
public sealed class MiMotorPdf : IPdfEngine
{
public string Name => "mimotor";
public Task<byte[]> ConvertHtmlToPdfAsync(string html, PdfRenderOptions o, CancellationToken ct = default)
=> /* tu conversión HTML -> PDF */;
}
builder.Services.AddSolarBlazorDocs(docs => docs.AddEngine<MiMotorPdf>());
// y se usa con: new PdfRenderOptions { Engine = "mimotor" }
El IPdfEngineResolver / IExcelEngineResolver selecciona el motor por nombre en tiempo de ejecución.
Componentes incluidos
DocumentLayout— envuelve tu contenido en un documento HTML completo con estilos base de impresión, orientación e idioma (<html lang>). Opcional.DocumentActions— barra de acciones reutilizable (selector de idioma y orientación, imprimir, descargar PDF/Excel) con la lógica de descarga encapsulada y su propio módulo JS. Parametrizable y opcional:
<DocumentActions PdfComponentType="typeof(FacturaDocumento)"
ExcelComponentType="typeof(FacturaContenido)"
Parameters="DocParams"
FileName="factura"
@bind-Culture="_culture"
@bind-Orientation="_orientation" />
Piezas principales
| Tipo | Rol |
|---|---|
IBlazorDocsService |
Fachada: componente → HTML → PDF/Excel. |
IBlazorComponentRenderer |
Renderiza un componente Blazor a HTML. |
IPdfEngine / IExcelEngine |
Estrategia de conversión. |
IPdfEngineResolver / IExcelEngineResolver |
Selecciona la estrategia por nombre. |
DocumentLayout / DocumentActions |
Componentes de maquetación y acciones. |
Requisitos
- .NET 10
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- Microsoft.AspNetCore.Components.Web (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on SolarBlazorDocs.Abstractions:
| Package | Downloads |
|---|---|
|
SolarBlazorDocs.Excel
Motor de conversion a Excel (xlsx) para SolarBlazorDocs basado en ClosedXML. Extrae las tablas del HTML renderizado. Registra con builder.AddClosedXmlExcelEngine(). |
|
|
SolarBlazorDocs.Browser
Soporte Blazor WebAssembly para SolarBlazorDocs: renderiza cualquier componente Blazor a HTML en el navegador y lo imprime (Guardar como PDF) usando el motor de impresion del propio navegador via JS interop. No requiere servidor ni Chromium. |
|
|
SolarBlazorDocs.Pdf
Motor de conversion a PDF para SolarBlazorDocs basado en PuppeteerSharp (Chromium headless). Registra con builder.AddPuppeteerEngine(). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.0 | 162 | 7/25/2026 |