Nedev.FileConverters.PptxToPpt 0.1.0

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

Nedev.FileConverters.PptxToPpt

PPTX to PPT converter - convert PowerPoint Open XML (.pptx) to legacy binary format (.ppt) with high performance. This library also integrates with the Nedev.FileConverters.Core NuGet package: a file‑converter adapter is registered automatically so that the core's static converter/registry can be used by other projects.

This project has no third‑party dependencies other than the Core package.

Licensed under the MIT License.

Project Status: Functional Prototype (Current)

This project is currently in early development. It provides a functional foundation for converting PPTX files to the legacy PPT format. While core features like text and basic shapes are supported, advanced formatting and complex elements are still in development.

Features

  • Pure .NET 10 Implementation: No third-party library dependencies (no Interop, no OpenXML SDK).
  • Custom CFBF Writer: Built-in implementation of the Compound File Binary Format (MS-CFB).
  • Core Conversion: Basic support for slides, text, and common shapes.
  • Media Support: Preliminary support for embedded images.
  • CLI Tool: Batch conversion support via command line.
  • Performance Focused: Minimal memory footprint and high-speed processing.

Supported Elements

  • Slide parsing and generation
  • Text boxes and basic text formatting
  • Simple geometric shapes (Rectangles, Ellipses, etc.)
  • Embedded Pictures (JPEG, PNG)
  • Slide Notes
  • Basic Master Slide support
  • Theme/Font mapping

Roadmap

  • Advanced Formatting: Complex text effects, paragraph styles, and bullet points.
  • Complex Shapes: SmartArt, group shapes (nested), and advanced Bezier curves.
  • Tables & Charts: Full support for PowerPoint tables and OLE-embedded charts.
  • Transitions & Animations: Mapping PPTX entrance/exit effects to PPT equivalents.
  • Audio/Video: Support for embedded multimedia streams.
  • Encryption: Support for password-protected documents.

Project Structure

src/
├── Nedev.FileConverters.PptxToPpt/           # Core library (depends on Nedev.FileConverters.Core NuGet package)
│   ├── Cff/                    # Compound File Format writer (MS-CFB)
│   ├── Ppt/                    # PPT binary format generator (MS-PPT)
│   ├── Pptx/                   # PPTX parser (OpenXML)
│   └── Conversion/             # High-level conversion orchestrator
└── Nedev.FileConverters.PptxToPpt.Cli/        # Command-line interface application

CLI Usage

# Convert single file
dotnet run --project src/Nedev.FileConverters.PptxToPpt.Cli input.pptx  # uses Nedev.FileConverters.Core NuGet package for logging/exception

# Specify output directory
dotnet run --project src/Nedev.FileConverters.PptxToPpt.Cli -o output input.pptx

# Batch convert
dotnet run --project src/Nedev.FileConverters.PptxToPpt.Cli -f *.pptx

Library Usage

This project produces a nuget package (Nedev.FileConverters.PptxToPpt) containing both net8.0 and netstandard2.1 builds. To consume in another project:

  1. Add a package reference:

    <PackageReference Include="Nedev.FileConverters.PptxToPpt" Version="0.1.0" />
    

    or run dotnet add package Nedev.FileConverters.PptxToPpt --version 0.1.0.

  2. Call the static converter exposed by the package:

    using (var input = File.OpenRead("presentation.pptx"))
    using (var output = Nedev.FileConverters.Converter.Convert(input, "pptx", "ppt"))
    using (var fs = File.Create("presentation.ppt"))
    {
        output.CopyTo(fs);
    }
    
  3. Implementing IFileConverter

    The core package defines an interface:

    namespace Nedev.FileConverters.Core {
        public interface IFileConverter {
            Stream Convert(Stream input);
        }
    }
    

    You can implement this in your own library to register new conversions. A sample adapter already exists in this repo (Conversion/PptxToPptFileConverter.cs): it writes the incoming stream to temporary files and delegates to the internal converter logic.

    To register a converter, use the DI extension method provided by the core package:

    var services = new ServiceCollection();
    services.AddFileConverter("pptx","ppt", new PptxToPptFileConverter());
    var provider = services.BuildServiceProvider();
    

    After registration the converter becomes available through Nedev.FileConverters.Converter.Convert(...) or the ConverterRegistry.

    You may decorate your implementation with the [FileConverter] attribute to allow automatic discovery when the package scans assemblies.


The CLI application demonstrates both the basic usage and how the adapter is registered on startup; refer to its Program.cs for a working example.

Build

Built with the new .NET 10 features.

dotnet build src/Nedev.FileConverters.PptxToPpt.slnx

Requirements

  • .NET 10.0 SDK
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos 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.1.0 112 3/6/2026