Saving Presentations

exportToFile, exportToBytes, exportToStream — and several presentations per process.

0Namespaces used by the C# samples

using NetCorePpt;                  // PptxGen, Slide
using NetCorePpt.CoreInterfaces;   // option objects: TextProps* / ShapeProps / ImageProps / TableProps / HAlign / VAlign ...
using NetCorePpt.CoreEnums;        // ShapeType, ChartType, MediaType, ShadowType, BulletType, DashType, SCHEME_COLORS ...
using TableRow = System.Collections.Generic.List<NetCorePpt.CoreInterfaces.TableCell>;
Several methods are available when generating a presentation.
  • Every export method writes the complete package before it returns
  • Runnable samples: see the Usage Examples section of this site

Saving as a File (exportToFile)

Write the finished presentation to a .pptx file on disk.

Export Options (exportToFile)

ArgumentTypeDefaultDescription
outputFilepathstring—path of the file to write
compressbooltrueapply zip compression (smaller file, a little slower)

Export File Example

NetCorePpt · C#
// `exportToFile` is awaited - there is no promise chain to manage
var fileName = await pptx.exportToFile("Presentation-Demo.pptx");
Console.WriteLine($"created file: {fileName}");

Generating Other Formats (exportToBytes)

Keep the presentation in memory as a byte[] — useful for uploading to cloud storage, returning it from an API or attaching it to a message. The other output types the JavaScript library offers (blob, arraybuffer, nodebuffer, …) are browser/Node containers; on .NET the bytes cover all of them.

Export Example

NetCorePpt · C#
var data = await pptx.exportToBytes();
Console.WriteLine($"presentation is {data.Length} bytes");
Console.WriteLine(Convert.ToBase64String(data, 0, Math.Min(100, data.Length)));

// ...or hand the bytes to whatever needs them:
await File.WriteAllBytesAsync("Presentation-Demo.pptx", data);

Streaming (exportToStream)

Write the package into any Stream — an HTTP response body, a file, a blob in the cloud.

NetCorePpt · C#
// ASP.NET Core: stream it straight into the response
app.MapGet("/presentation", async (HttpContext ctx) =>
{
    ctx.Response.ContentType =
        "application/vnd.openxmlformats-officedocument.presentationml.presentation";
    ctx.Response.Headers.ContentDisposition =
        "attachment; filename=Presentation-Demo.pptx";

    var bytes = await pptx.exportToBytes();
    await ctx.Response.Body.WriteAsync(bytes);
});

// Or into a MemoryStream / FileStream:
using var ms = new MemoryStream();
await ms.WriteAsync(await pptx.exportToBytes());

Creating Multiple Presentations

One PptxGen instance is one presentation. Create a new instance for each deck — nothing is shared between them.

NetCorePpt · C#
// Presentation 1
var pptx1 = new PptxGen();
pptx1.addSlide().addText("Presentation 1", new TextPropsOptions { x = 1, y = 1 });
await pptx1.exportToFile("Presentation-1.pptx");

// Presentation 2
var pptx2 = new PptxGen();
pptx2.addSlide().addText("Presentation 2", new TextPropsOptions { x = 1, y = 1 });
await pptx2.exportToFile("Presentation-2.pptx");