SolarBlazorDocs.Abstractions 10.0.0

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

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:

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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