MgSoftDev.KnowledgeHub.Pdf
1.0.0
dotnet add package MgSoftDev.KnowledgeHub.Pdf --version 1.0.0
NuGet\Install-Package MgSoftDev.KnowledgeHub.Pdf -Version 1.0.0
<PackageReference Include="MgSoftDev.KnowledgeHub.Pdf" Version="1.0.0" />
<PackageVersion Include="MgSoftDev.KnowledgeHub.Pdf" Version="1.0.0" />
<PackageReference Include="MgSoftDev.KnowledgeHub.Pdf" />
paket add MgSoftDev.KnowledgeHub.Pdf --version 1.0.0
#r "nuget: MgSoftDev.KnowledgeHub.Pdf, 1.0.0"
#:package MgSoftDev.KnowledgeHub.Pdf@1.0.0
#addin nuget:?package=MgSoftDev.KnowledgeHub.Pdf&version=1.0.0
#tool nuget:?package=MgSoftDev.KnowledgeHub.Pdf&version=1.0.0
MgSoftDev.KnowledgeHub.Pdf
Exportación a PDF para MgSoftDev.KnowledgeHub, impresa por Chromium a través de Playwright.
Convierte una página publicada —o una rama entera, como un manual— en un PDF con portada, índice y marcadores navegables. Como lo imprime un navegador de verdad, sale exactamente como se ve en el lector, con tu CSS incluido, y no hay ningún mapeador HTML que mantener: lo que produzca el editor mañana se renderiza solo.
Registro
services.AddKnowledgeHubPdf();
Regístralo donde corre el core, el mismo contenedor que AddKnowledgeHubCore. En WPF y Blazor
Server es el mismo; en WASM va en el servidor de la API, no en el cliente. Sin registrarlo, el
botón de exportar no aparece.
El paquete arrastra
Microsoft.Playwright: 195 MB de nupkg, una vez por máquina en la caché de NuGet.
De dónde sale el navegador
services.AddKnowledgeHubPdf(o => o.BrowserSource = PdfBrowserSource.Auto);
| Modo | Qué hace | En tu app |
|---|---|---|
Auto (defecto) |
Edge instalado → copia empaquetada → caché. Recuerda el que funcionó. | según el que use |
SystemBrowser |
El Edge ya instalado. No descarga nada. | ~100 MB (driver) |
BundledWithApp |
Dentro de la carpeta de la app; entra en el MSI. Sin internet. | ~370 MB |
PlaywrightCache |
%LOCALAPPDATA%\ms-playwright, tras playwright install. |
~100 MB |
DownloadOnDemand |
Lo instala en la primera exportación. | ~100 MB |
Usar Edge te ahorra los 265 MB del navegador, pero no los ~100 MB del driver de Playwright. El
paquete trae un .props que fija PlaywrightPlatform a tu sistema: sin él serían 548 MB, porque
se copiaría el driver de las cinco plataformas.
Si no hay ningún navegador, la exportación se rechaza con un mensaje que dice cuál falta — nunca una excepción cruda.
Temas, portada, cabecera y pie
services.AddKnowledgeHubPdf(o =>
{
// Se lee en CADA exportación: una empresa cambia su tema dejando el archivo junto al
// ejecutable, sin recompilar.
o.CssFilePath = Path.Combine(AppContext.BaseDirectory, "pdf-tema.css");
o.LogoFilePath = Path.Combine(AppContext.BaseDirectory, "logo.png");
o.Cover = new PdfTemplate { Html = "{{Logo}}<h1>{{Title}}</h1><div>{{GeneratedAt}}</div>" };
o.Footer = new PdfTemplate { Html = "…<span class=\"pageNumber\"></span>…" };
});
Portada, cabecera y pie admiten Html (plantilla con {{Title}}, {{GeneratedAt}},
{{GeneratedBy}}, {{SectionCount}}, {{Logo}}, {{LogoSrc}}), FilePath o Factory.
Cabecera y pie se renderizan en un contexto aislado: no les llega el CSS del documento, las
imágenes solo cargan como data URI ({{LogoSrc}}) y los estilos deben ir en línea. Si el margen es
menor que la cabecera, esta se superpone al contenido sin avisar: deja ~22 mm si lleva imagen.
Marcadores
EmbedOutline (activado) mete el esquema navegable. Activa también TaggedPdf, porque Chromium
construye el esquema desde la estructura etiquetada y por su cuenta la opción se ignora en silencio.
Cuesta ~19% más de tamaño.
El índice lleva enlaces internos pero no números de página: Chromium no sabe dónde cae cada sección hasta maquetar, y no hay segunda pasada.
Memoria
El navegador no queda residente: se abre, imprime y se cierra en cada exportación, con las
llamadas serializadas y un tope de tiempo (TimeoutSeconds, 60 s). Exportar es ocasional y una app
de escritorio no debería sostener 200-300 MB por un botón que quizá nadie pulse.
Ver la guía §8.2 para el permiso de descarga, el MSBuild que empaqueta el navegador y los ejemplos completos.
| 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
- MgSoftDev.KnowledgeHub.Abstractions (>= 1.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Playwright (>= 1.59.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 36 | 9/13/2026 |
| 0.23.0-preview.1 | 35 | 9/13/2026 |
| 0.22.0-preview.1 | 57 | 9/1/2026 |
| 0.21.0-preview.1 | 55 | 9/1/2026 |
| 0.20.0-preview.1 | 64 | 8/27/2026 |
| 0.19.4-preview.1 | 70 | 8/25/2026 |
| 0.19.3-preview.1 | 73 | 8/15/2026 |
| 0.19.2-preview.1 | 67 | 8/15/2026 |
| 0.19.1-preview.1 | 63 | 8/15/2026 |
| 0.19.0-preview.1 | 64 | 8/15/2026 |
| 0.18.0-preview.1 | 72 | 8/14/2026 |
| 0.17.0-preview.1 | 67 | 8/14/2026 |
| 0.16.0-preview.1 | 64 | 8/13/2026 |
| 0.15.0-preview.1 | 65 | 8/13/2026 |
| 0.14.0-preview.1 | 62 | 8/13/2026 |
| 0.13.0-preview.1 | 70 | 8/13/2026 |
| 0.12.0-preview.1 | 72 | 8/12/2026 |
| 0.11.0-preview.1 | 68 | 8/11/2026 |