Nedev.FileConverters.PptxToPdf 0.1.0

dotnet add package Nedev.FileConverters.PptxToPdf --version 0.1.0
                    
NuGet\Install-Package Nedev.FileConverters.PptxToPdf -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.PptxToPdf" 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.PptxToPdf" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="Nedev.FileConverters.PptxToPdf" />
                    
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.PptxToPdf --version 0.1.0
                    
#r "nuget: Nedev.FileConverters.PptxToPdf, 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.PptxToPdf@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.PptxToPdf&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=Nedev.FileConverters.PptxToPdf&version=0.1.0
                    
Install as a Cake Tool

Nedev.FileConverters.PptxToPdf

A high-performance .NET library for converting PPTX (PowerPoint) files to PDF with zero third-party dependencies. Also ships with a ready-to-use command-line tool.

Features

  • Zero Dependencies: No external NuGet packages required for core functionality
  • Core Integration: Implements IFileConverter from Nedev.FileConverters.Core
  • Multi-Target: Supports both .NET 8.0 and .NET Standard 2.1
  • Parallel Processing: Optional slide-level parallelization for faster conversion
  • Stream-Based: Support for both file path and stream-based conversion
  • CJK Support: Proper handling of Chinese, Japanese, and Korean characters

Feature Completeness

Core Pipeline

Area Status Notes
PPTX parsing ✅ Complete Full OOXML format support
Slide rendering ✅ Complete End-to-end conversion chain
PDF output ✅ Complete Standard PDF generation
Library API ✅ Complete Simple Convert() method with file path or stream
CLI tool ✅ Complete Nedev.FileConverters.PptxToPdf.Cli with --parallel flag

PPTX Parsing

Feature Status Notes
Slide master / layout inheritance ✅ Complete Color maps, text styles, default formatting
Theme parsing (colors, fonts, effects, format scheme) ✅ Complete Full scheme color resolution
Slide transitions & timing ✅ Parsed Data model captured; not rendered (N/A for PDF)
Animations ✅ Parsed Data model captured; not rendered (N/A for PDF)
Speaker notes ✅ Parsed Not rendered to PDF output
Comments / comment authors ✅ Parsed Not rendered to PDF output
Document properties ✅ Complete Core, extended & custom properties
Hyperlinks ✅ Parsed Internal / external link resolution

Shape Rendering

Feature Status Notes
Basic shapes (rect, ellipse, triangle, diamond, etc.) ✅ Complete
Polygons & stars ✅ Complete
Arrows (right, left, up, down) ✅ Complete
Decorative shapes (heart, cloud) ✅ Complete
Custom geometry / freeform paths ✅ Complete Via PathRenderer with Bézier support
Shape rotation & transform ✅ Complete
Connectors ✅ Complete Straight, elbow, curved
Group shapes (nested) ✅ Complete Recursive child parsing

Fill & Outline

Feature Status Notes
Solid fill ✅ Complete
Gradient fill (linear, radial, rectangular, path) ✅ Complete Multi-stop stitching supported
Pattern fill ⚠️ Approximate Simplified rendering
Picture fill ⚠️ Simplified Basic implementation; complex crops may differ
Shape outline (width, color, dash styles) ✅ Complete

Text Rendering

Feature Status Notes
Paragraph alignment & spacing ✅ Complete
Word wrap ✅ Complete Estimated glyph metrics
Font, size, color, bold, italic, underline, strikethrough ✅ Complete
Superscript / subscript ✅ Complete Baseline offset
Bullet styles (char, auto-number) ✅ Complete
Text body properties (margins, vertical alignment, auto-fit) ✅ Complete
CJK (Chinese/Japanese/Korean) detection ✅ Complete Font fallback for CJK text

Font Handling

Feature Status Notes
14 PDF standard fonts ✅ Complete
System font embedding (TrueType & Type0/CIDFont) ✅ Complete CMap + ToUnicode for Unicode text
Font metrics & width tables ✅ Complete

Image Support

Feature Status Notes
JPEG ✅ Native Passed through directly
PNG ⚠️ Simplified Decoded to raw pixels & re-encoded
GIF / BMP / TIFF ⚠️ Simplified Pixel extraction with placeholder fallback
Image effects (shadow, glow, reflection, bevel, soft edges, 3-D rotation) ⚠️ Approximate

Table Rendering

Feature Status Notes
Row / column structure ✅ Complete
Merged cells (horizontal & vertical) ✅ Complete
Cell borders (per-edge style) ✅ Complete
Cell text with paragraph formatting ✅ Complete
Table styles (header row, banding) ⚠️ Approximate

Charts

Feature Status Notes
Bar / Column / Line / Pie / Area charts ⚠️ Simplified Rendered from parsed data; visual approximation
Scatter / Radar / Doughnut / Bubble / Stock ⚠️ Parsed Data model only; rendering placeholder
Axes, gridlines, legend ⚠️ Simplified Basic rendering

SmartArt

Feature Status Notes
List (vertical / horizontal) ⚠️ Simplified
Process / Cycle / Matrix / Pyramid ⚠️ Simplified
Hierarchy / Org chart ⚠️ Simplified
Relationship / Target ⚠️ Simplified

Background

Feature Status Notes
Solid color background ✅ Complete
Gradient / image background ❌ Not yet Only solid fill parsed

Performance

Feature Status Notes
Slide-level parallel processing ✅ Complete --parallel flag / API parameter
Serial lock on PDF write phase ⚠️ By design Prevents interleaved output

Installation

NuGet Package

Install-Package Nedev.FileConverters.PptxToPdf

Build from Source

git clone <repository-url>
cd FileConverters.PptxToPdf
dotnet build src/Nedev.FileConverters.PptxToPdf/Nedev.FileConverters.PptxToPdf.csproj

Usage

using Nedev.FileConverters;

// Automatic discovery via FileConverter attribute
using var inputStream = File.OpenRead("input.pptx");
using var outputStream = File.Create("output.pdf");
using var convertedStream = Converter.Convert(inputStream, "pptx", "pdf");
convertedStream.CopyTo(outputStream);

As a Library

using Nedev.FileConverters.PptxToPdf;

var converter = new PptxToPdfConverter();

// Basic conversion
converter.Convert("input.pptx", "output.pdf");

// Parallel mode (faster for large decks)
converter.Convert("input.pptx", "output.pdf", parallel: true);

// Stream-based conversion
using var input = File.OpenRead("input.pptx");
using var output = File.Create("output.pdf");
converter.Convert(input, output);

Command-Line Tool

# Basic
Nedev.FileConverters.PptxToPdf.Cli input.pptx output.pdf

# With parallel processing
Nedev.FileConverters.PptxToPdf.Cli input.pptx output.pdf --parallel

# Using Core package's Converter
Nedev.FileConverters.PptxToPdf.Cli input.pptx output.pdf --core

# Help
Nedev.FileConverters.PptxToPdf.Cli --help

Project Structure

src/
├── Nedev.FileConverters.PptxToPdf/                    # Core library
│   ├── PptxToPdfConverter.cs                           # Public API entry point
│   ├── PptxToPdfFileConverter.cs                       # IFileConverter implementation
│   ├── Pptx/                                         # PPTX / OOXML parsing
│   │   ├── PptxDocument.cs                             # ZIP archive reader & part loader
│   │   ├── Presentation.cs                             # Presentation-level properties
│   │   ├── Slide.cs                                    # Slide & connector parsing
│   │   ├── SlideMaster.cs                               # Master, layout, color map, text styles
│   │   ├── Theme.cs                                    # Theme colors, fonts, effects
│   │   ├── Shape.cs                                    # AutoShape geometry, fill, text
│   │   ├── GroupShape.cs                               # Group shape tree
│   │   ├── Picture.cs                                  # Embedded image references
│   │   ├── Table.cs                                    # Table, row, cell, borders
│   │   ├── Chart.cs                                    # Chart data & series
│   │   ├── SmartArt.cs                                 # SmartArt diagrams
│   │   ├── Background.cs                                # Slide background
│   │   ├── Hyperlink.cs                                 # Hyperlink resolution
│   │   ├── Animation.cs                                 # Animation data model
│   │   ├── Notes.cs                                    # Speaker notes & comments
│   │   └── DocumentProperties.cs                        # Core / extended metadata
│   ├── Pdf/                                           # PDF generation
│   │   ├── PdfDocument.cs                               # PDF object tree & serialization
│   │   ├── PdfObjects.cs                                # Low-level PDF object types
│   │   ├── PdfRenderer.cs                               # Slide → PDF content stream
│   │   ├── FontManager.cs                               # Standard font mapping & metrics
│   │   ├── EmbeddedFontManager.cs                         # System font embedding (Type0)
│   │   ├── FontEmbedder.cs                              # TrueType font file reader
│   │   ├── GradientRenderer.cs                           # Gradient shading patterns
│   │   ├── PathRenderer.cs                              # Custom geometry → PDF paths
│   │   └── ImageEffectsRenderer.cs                      # Shadow, glow, reflection, etc.
│   ├── Image/                                         # Image processing
│   │   ├── ImageConverter.cs                           # Format conversion (PNG/GIF/BMP/TIFF → JPEG)
│   │   └── ImageDecoder.cs                             # Raw pixel extraction
│   └── Models/                                        # Shared data models
│       ├── Color.cs                                    # Color representation & conversion
│       ├── Enums.cs                                    # Shared enumerations
│       ├── Fill.cs, Outline.cs                          # Fill & outline models
│       ├── Paragraph.cs                                  # Paragraph & run models
│       ├── Rect.cs, Geometry.cs                          # Geometry primitives
│       ├── ShapeTypeMapping.cs                           # OOXML preset → internal shape type
│       ├── TextProperties.cs                             # Text body / paragraph properties
│       ├── Transform2D.cs                                # 2-D transform
│       ├── GradientStop.cs                              # Gradient stop model
│       └── ShapeEffects.cs                              # Shadow, glow, reflection effects
└── Nedev.FileConverters.PptxToPdf.Cli/               # Command-line interface
    └── Program.cs

Integration with Nedev.FileConverters.Core

This package integrates seamlessly with Nedev.FileConverters.Core:

  • Automatic Discovery: The PptxToPdfFileConverter class is decorated with [FileConverter("pptx", "pdf")] attribute
  • Unified API: Use Nedev.FileConverters.Converter.Convert() for consistent interface across all converters
  • DI Support: Can be registered in dependency injection containers
  • Extensibility: Easy to add more converters following the same pattern

Requirements

  • .NET 8.0 or .NET Standard 2.1 compatible runtime
  • Nedev.FileConverters.Core 0.1.0 or later
  • No third-party NuGet packages required for core functionality

License

This project is licensed under the MIT License.

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 78 3/6/2026