$npx -y skills add DevExpress/agent-skills --skill devexpress-office-file-api-presentationBuild .NET applications with the DevExpress Presentation API for creating, reading, modifying, and exporting PowerPoint presentations programmatically without Microsoft Office. Use when working with .pptx files, slides, shapes, text, tables, slide masters and layouts, themes, sli
| 1 | # DevExpress Presentation API |
| 2 | |
| 3 | The Presentation API is a cross-platform .NET library for creating, loading, modifying, saving, and printing PowerPoint presentations in code — without requiring Microsoft Office. It supports PPTX, PPTM, POTX, and POTM formats and can export to PDF. You can use it in console, desktop, and web applications targeting .NET 8+. |
| 4 | |
| 5 | ## When to Use This Skill |
| 6 | |
| 7 | Use this skill when you need to: |
| 8 | |
| 9 | - Create PowerPoint presentations (.pptx) programmatically without Microsoft Office |
| 10 | - Load and read existing .pptx/.pptm/.potx/.potm files |
| 11 | - Modify existing presentations (add/remove slides, update shapes and text) |
| 12 | - Manage slides: add, remove, reorder, clone, or copy slides between presentations |
| 13 | - Work with shapes: add geometric shapes, picture shapes, and configure fill and outline |
| 14 | - Add and format text inside shapes (paragraphs, runs, bullets, font settings) |
| 15 | - Create and customize tables on slides (rows, columns, cells, styles, borders) |
| 16 | - Set slide backgrounds (solid color, gradient, pattern, picture) |
| 17 | - Configure slide masters and layouts for consistent presentation design |
| 18 | - Export presentations to PDF with options (security, image quality, signatures) |
| 19 | - Merge or split presentations |
| 20 | - Add, read, or remove speaker notes |
| 21 | - Configure headers and footers on slides |
| 22 | - Search, replace, or remove text across a presentation |
| 23 | - Extract text and images from presentation slides |
| 24 | - Print presentations |
| 25 | - Configure themes, view settings, and document properties |
| 26 | |
| 27 | ## Prerequisites & Installation |
| 28 | |
| 29 | ### NuGet Packages |
| 30 | |
| 31 | | Package | Purpose | |
| 32 | |---------|---------| |
| 33 | | `DevExpress.Docs.Presentation` | Core presentation processing (create, load, edit, save, export) | |
| 34 | |
| 35 | ### .NET (8/9/10+) |
| 36 | |
| 37 | ```bash |
| 38 | dotnet add package DevExpress.Docs.Presentation |
| 39 | ``` |
| 40 | |
| 41 | **Important**: All DevExpress packages in a project must share the same version number. A valid DevExpress license is required. |
| 42 | |
| 43 | ### Non-Windows Development (Linux, macOS, Docker, Cloud) |
| 44 | |
| 45 | The SkiaSharp-based drawing engine is enabled **automatically** on non-Windows platforms. Just add the drawing engine package: `dotnet add package DevExpress.Drawing.Skia`. |
| 46 | |
| 47 | If you hit a `DllNotFoundException` for a Skia/HarfBuzz assembly, add the SkiaSharp native asset package matching your OS (`SkiaSharp.NativeAssets.Linux`, `SkiaSharp.NativeAssets.macOS`, etc.). See [references/getting-started.md](references/getting-started.md) for the full setup and troubleshooting guide. |
| 48 | |
| 49 | ## Before You Start — Ask the Developer |
| 50 | |
| 51 | If the host agent has a structured question-asking tool available, use it to ask these questions one at a time with clear options — for example, Claude Code's `AskUserQuestion` tool or GitHub Copilot's `askQuestions` tool. If no such tool is available, ask the questions directly in the chat response before generating code. |
| 52 | |
| 53 | Before generating code, ask these questions to avoid rework: |
| 54 | |
| 55 | ### General Questions |
| 56 | 1. **Target framework**: Are you using .NET 8+ or .NET Framework 4.x? |
| 57 | 2. **New or existing project?**: Are you creating a new project or adding to an existing one? |
| 58 | 3. **Hosting model**: Console app, ASP.NET Core, Blazor, MAUI, WinForms, WPF, or something else? |
| 59 | |
| 60 | ### Presentation-Specific Questions |
| 61 | 4. **Operation type**: Create new presentation / read existing / modify slides / merge-split / export to PDF? |
| 62 | 5. **Features needed**: Slides / shapes / text / tables / backgrounds / themes / notes / headers-footers? |
| 63 | 6. **Output**: Do you need to extract content, or produce a .pptx, a PDF, or per-slide images (PNG/JPEG via `ExportToImages`)? |
| 64 | |
| 65 | > **Rule**: If the developer's answer is ambiguous or missing, ask before generating code. Do not guess. |
| 66 | |
| 67 | ## Component Overview |
| 68 | |
| 69 | The Presentation API provides: |
| 70 | |
| 71 | - **Document management**: Create, load, and save presentations (`Presentation`, `DocumentFormat`) |
| 72 | - **Slide management**: Add, remove, reorder, clone, and copy slides (`Slide`, `SlideCollection`) |
| 73 | - **Masters and layouts**: Define consistent slide designs (`SlideMaster`, `SlideLayout`, `SlideLayoutType`) |
| 74 | - **Shapes and text**: All shape types, text areas, paragraphs, runs, and formatting (`Shape`, `TextArea`, `TextParagraph`, `TextRun`) |
| 75 | - **Tables**: Create and customize slide tables (`Table`, `TableCell`, `Tabl |