Cayaqui.MPS.PptExport 0.5.1

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

Cayaqui.MPS.PptExport

Genera slides PowerPoint para reportes EVM programáticamente, usando Syncfusion.Presentation. Cada sección implementa IPptSlideSection y agrega uno o más slides a un IPresentation existente.

Distribución propietaria — requiere contrato comercial con Cayaqui. Ver LICENSE.txt.

Dependencias: Cayaqui.MPS.ReportModels (DTOs y paleta MPS) + licencia Syncfusion Presentation.


v0.5.0 — CoverSlide: portada corporativa fullscreen

Nueva sección CoverSlide que genera una portada profesional de pantalla completa (720×540 pt) sobre fondo primario oscuro. Diseño: barra superior amber → logos owner (izq) + MPS producto (der) → título / proyecto / fecha → logo Cayaqui footer.

Se activa con PptReportOptions.Logos (nuevo en esta versión):

var logos = new LogoOptions
{
    OwnerLogo        = new BytesLogo { Bytes = ownerLogoBytes },
    MpsLogo          = new BytesLogo { Bytes = mpsProductLogoBytes },
    MpsCompanyLogo   = new BytesLogo { Bytes = cayaquiLogoBytes }
};

var opts = new PptReportOptions { Theme = theme, Logos = logos };

await new PptReport()
    .AddCoverSlide()           // portada corporativa
    .AddEvmKpiStrip(kpis)
    .BuildAsync(stream, opts, ct);

v0.4.0 — ReportTheme integrado en PptReportOptions

PptReportOptions ahora expone Theme (tipo ReportTheme de Cayaqui.MPS.ReportModels). Permite compartir el mismo objeto de branding entre los tres formatos de export:

var theme = new ReportTheme
{
    ReportTitle          = "Monthly Project Report",
    ProjectName          = "Talara U3 — Expansion",
    CompanyName          = "Cayaqui S.A.",
    PreparedBy           = "Project Controls Team",
    ReportDate           = new DateTime(2026, 4, 30),
    ConfidentialityLabel = "CONFIDENCIAL",
    PrimaryColorHex      = "#0F2044",
    AccentColorHex       = "#C9961A"
};

// Excel
var excelStream = await excelExporter.ExportAsync(report, new ExcelExportOptions { Theme = theme });

// PowerPoint
var ctx = new PptReportContext(new PptReportOptions { Theme = theme });
await new EvmKpiStripSlide { Snapshot = kpi }.RenderAsync(prs, ctx);

Theme es null por default — comportamiento legacy sin cambios. Los slides existentes no consumen Theme directamente (el branding de slides usa PptReportOptions.HeaderBackgroundColor / AccentColor); Theme está disponible para slides que implementen portada corporativa en versiones futuras.


v0.3.5 — R9C esquema actualizado

R9cTableSlide ahora usa el nuevo esquema R9C: PO / CO / PC / Comprometido / Incurrido / Pagado / Trends / EAC / %Ejec. Requiere Cayaqui.MPS.ReportModels ≥ 0.3.5.


v0.3.4 — Paridad de colores con diseño web

WaterfallSlide: declaraciones de color refactorizadas para usar constantes de EvmChartPalette (WaterfallTotal, WaterfallSubtotal, Earned, Actual, Cyan, Amber). Sin cambio de comportamiento — mismos valores hex. Requiere Cayaqui.MPS.ReportModels ≥ 0.3.4.


v0.3.3 — 6 nuevas slides EPC (24 slides totales)

6 nuevas slides de project controls para ingeniería/procura:

Slide Output Contenido
WbsBudgetTableSlide tabla 9 cols Code / WBS Name (indentado por Level) / BAC / EV / AC / EAC / CV / CPI / % Done. CV verde/rojo; CPI semáforo.
EngProgressTableSlide tabla 8 cols Code / Title / Discipline / Plan% / Actual% / Deviation / Planned Date / Forecast Date. Deviation coloreada.
LookaheadTableSlide tabla 7 cols WBS Code / Activity / Responsible / Start / Finish / Status / Comments. Status con coloring.
EvmControlChartSlide line chart SV (ámbar) y CV (azul) en el tiempo + línea cero de referencia.
RaciMatrixSlide tabla pivot Actividades × Roles. R=azul, A=púrpura, C=ámbar, I=neutro.
PoRegisterSlide tabla 7 cols PO# / Supplier / Description / Amount / Status / Issue Date / Delivery Date.

Requiere Cayaqui.MPS.ReportModels ≥ 0.3.3. Sin breaking changes.


v0.2.0 — 18 slides EVM completos (Fase 1 + Fase 2)

Paridad total con Cayaqui.MPS.ExcelExport v0.6.0 y componentes MPS.Components.Evm.

Fase 1 — mirror ExcelExport (10 slides)

Slide Output Contenido
EvmKpiStripSlide tabla 8 cols CPI/SPI/EV/AC/PV/BAC/EAC/VAC. Semáforo en CPI/SPI. Fila delta (Δ vs período anterior).
EvmSCurveChartSlide line chart 4 series (PV/EV/AC/Forecast) + stripline BAC horizontal + stripline ControlDate vertical.
BurndownChartSlide line chart Remaining + Ideal calculado + optional TargetDate stripline.
PhysicalProgressCurveSlide line chart Baseline/Plan/Actual/Forecast % + optional GoalLine (100%) + ControlDate.
ProductionCurveSlide line chart Plan/Actual + optional NameplateRate stripline (capacidad de planta).
MonteCarloHistogramSlide column chart Bins pre-calculados + textbox con N, min, max, P50/P80/P90.
CashflowChartSlide combo dual-axis Columnas mensuales (Plan/Actual/Forecast, eje primario) + líneas acumuladas (eje secundario).
R9cTableSlide tabla 11 cols Reporte 9 columnas AACE 80R-13 con variance coloring.
RiskHeatmapSlide tabla grid N×M Score coloring por celda (semáforo).
ScheduleVarianceTableSlide tabla Baseline/Current/Forecast + SV días + threshold coloring.

Fase 2 — secciones nuevas (8 slides)

Slide Output Contenido
ContingencyDrawdownSlide line chart Plan/Actual contingencia restante + optional ControlDate.
WaterfallSlide tabla 3 cols Cascada: Label + Valor + Acumulado. Colors por WaterfallStepKind (Total=azul, Add=verde, Subtract=rojo, etc.).
ResourceHistogramSlide column stacked Pivote Period×Category. Una serie coloreada por categoría + optional Capacity line.
ManagementReserveTrackerSlide tabla Eventos de reserva de gestión, running balance, semáforo inicial/final.
TornadoChartSlide bar horizontal Low/High deviations por ítem, ordenado de mayor a menor range.
MilestoneStripSlide tabla 5 cols Hitos con color de fila por MilestoneHealth (OnTime=verde, AtRisk=ámbar, Late=rojo, Done=neutral).
RiskRegisterTableSlide tabla 10 cols Registro completo con score cell coloring por umbral.
ChangeOrderLogSlide tabla 8 cols Log de órdenes de cambio con status cell coloring.

v0.1.0 — Scaffold de infraestructura

Contratos base para el output layer PowerPoint:

Tipo Rol
IPptSlideSection Interfaz: RenderAsync(IPresentation, IPptReportContext)
IPptReportContext Acceso a opciones + helper AddSlide(...)
PptReportContext Implementación default inyectable
PptReportOptions Header color, accent color, tipografía, watermark
MpsColorExtensions.ToPpt() MpsColorIColor de Syncfusion
ColorParser.ParseHex() HTML hex → (R, G, B) byte tuple

Uso rápido — PptReport fluent builder

// DI registration
services.AddMpsPptExport(licenseKey: builder.Configuration["MPS:PptExportLicenseKey"]);

// Composition — en un handler, service o Blazor page
var report = new PptReport()
    .AddEvmKpiStrip(new EvmKpiStripSlide { Snapshot = kpiData })
    .AddEvmSCurveChart(new EvmSCurveChartSlide
    {
        Points      = sCurvePoints,
        Bac         = 20_000_000m,
        ControlDate = new DateTime(2026, 4, 30)
    })
    .AddCashflowChart(new CashflowChartSlide { Points = cashflowPoints })
    .AddMilestoneStrip(new MilestoneStripSlide { Milestones = milestones })
    .AddChangeOrderLog(new ChangeOrderLogSlide { Items = changeOrders })
    .AddWbsBudgetTable(new WbsBudgetTableSlide
    {
        Title = "Presupuesto WBS",
        Rows  = wbsRows
    })
    .AddRaciMatrix(new RaciMatrixSlide
    {
        Title = "Matriz RACI",
        Items = raciEntries
    });

// Export (Blazor)
@inject IPptReportExporter PptExporter
@inject IJSRuntime JS

await using var stream = await PptExporter.ExportAsync(report);
var bytes = ((MemoryStream)stream).ToArray();
using var dotnetStream = new DotNetStreamReference(new MemoryStream(bytes));
await JS.InvokeVoidAsync("downloadFileFromStream",
    $"reporte-{DateTime.Today:yyyy-MM-dd}.pptx",
    dotnetStream);

Uso manual (sin builder)

using var prs = Presentation.Create();
prs.SlideSize.Type = SlideSizeType.Widescreen;

var ctx = new PptReportContext(new PptReportOptions
{
    HeaderBackgroundColor = "#1F3864",
    AccentColor           = "#2E75B6",
    WatermarkText         = "DRAFT"
});

await new EvmKpiStripSlide  { Snapshot = kpiData }.RenderAsync(prs, ctx);
await new EvmSCurveChartSlide { Points = sCurvePoints, Bac = 10_000_000m }.RenderAsync(prs, ctx);

await using var ms = new MemoryStream();
prs.Save(ms);
prs.Close();

Coordenadas de slides

Las medidas en la API de Syncfusion.Presentation se expresan en puntos (pt). Un slide widescreen (16:9) mide 720 × 540 pt internamente en las implementaciones MPS.

Constante MPS Valor
SlideWidthPt 720
SlideHeightPt 540
MarginPt 24
TitleHeightPt 30
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

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
0.5.1 0 5/26/2026
0.5.0 0 5/26/2026
0.3.5 40 5/19/2026
0.3.4 31 5/19/2026
0.3.3 33 5/19/2026
0.3.2 50 5/18/2026
0.3.1 45 5/18/2026
0.3.0 45 5/18/2026
0.2.0 47 5/18/2026

0.5.1 — CoverSlide: logo aspect ratio preserved (FitLogo reads PNG IHDR dims; logos right-aligned and vertically centered). 0.5.0 — CoverSlide fullscreen PPT cover; PptReportOptions.Logos; PptReport.AddCoverSlide(). 0.3.5 — R9cTableSlide: esquema R9C actualizado (Incurrido/Pagado/Trends/EAC). Requiere ReportModels ≥ 0.3.5. 0.3.4 — WaterfallSlide: color declarations refactored to use EvmChartPalette constants (WaterfallTotal, WaterfallSubtotal, Earned, Actual, Cyan, Amber). No behavioral change; guarantees color parity with web design system and ReportModels palette.

0.3.3 — 6 new slides: WbsBudgetTableSlide, EngProgressTableSlide, LookaheadTableSlide, EvmControlChartSlide (SV/CV line chart), RaciMatrixSlide (pivot table), PoRegisterSlide. New PptReport fluent builder with all 24 slide methods.

0.3.2 — Fix: MPS.Licensing.dll incluido en lib/net10.0/ del .nupkg (faltaba en 0.3.0/0.3.1 → 502.5 en IIS).

0.3.1 — Fix: re-publicación de 0.3.0 con binarios correctos. Sin diferencia de API.

0.3.0 — Licensing: AddMpsPptExport acepta licenseKey opcional (ECDSA P-256). Sin clave válida, cada slide generado incluye text box de marca de agua en rojo. PptLicenseState registrado en DI. Sin breaking changes.

0.2.0 — 18 slides EVM: EvmKpiStripSlide, EvmSCurveChartSlide, BurndownChartSlide, PhysicalProgressCurveSlide, ProductionCurveSlide, MonteCarloHistogramSlide, CashflowChartSlide, R9cTableSlide, RiskHeatmapSlide, ScheduleVarianceTableSlide, ContingencyDrawdownSlide, WaterfallSlide, ResourceHistogramSlide, ManagementReserveTrackerSlide, TornadoChartSlide, MilestoneStripSlide, RiskRegisterTableSlide, ChangeOrderLogSlide. 68 tests. Paridad completa con ExcelExport v0.6.0 y MPS.Components.Evm. 0.1.0 — Scaffold: IPptSlideSection, IPptReportContext, PptReportContext, PptReportOptions.