OfficeIMO.PowerPoint.Pdf
3.2.7
Prefix Reserved
See the version list below for details.
dotnet add package OfficeIMO.PowerPoint.Pdf --version 3.2.7
NuGet\Install-Package OfficeIMO.PowerPoint.Pdf -Version 3.2.7
<PackageReference Include="OfficeIMO.PowerPoint.Pdf" Version="3.2.7" />
<PackageVersion Include="OfficeIMO.PowerPoint.Pdf" Version="3.2.7" />
<PackageReference Include="OfficeIMO.PowerPoint.Pdf" />
paket add OfficeIMO.PowerPoint.Pdf --version 3.2.7
#r "nuget: OfficeIMO.PowerPoint.Pdf, 3.2.7"
#:package OfficeIMO.PowerPoint.Pdf@3.2.7
#addin nuget:?package=OfficeIMO.PowerPoint.Pdf&version=3.2.7
#tool nuget:?package=OfficeIMO.PowerPoint.Pdf&version=3.2.7
OfficeIMO.PowerPoint.Pdf - PowerPoint to PDF export
OfficeIMO.PowerPoint.Pdf exports OfficeIMO.PowerPoint presentations to PDF through the first-party OfficeIMO.Pdf engine. In the reverse direction it reconstructs supported text, tables, safe shapes, and images as editable slide objects by default, with explicit visual, hybrid, and tables-only profiles.
Install
dotnet add package OfficeIMO.PowerPoint.Pdf
Quick start
using OfficeIMO.PowerPoint;
using OfficeIMO.PowerPoint.Pdf;
using var presentation = PowerPointPresentation.Load("deck.pptx");
presentation.SaveAsPdf("deck.pdf");
Examples
Export with slide-content controls
using OfficeIMO.PowerPoint;
using OfficeIMO.PowerPoint.Pdf;
using var presentation = PowerPointPresentation.Load("board-review.pptx");
var options = new PowerPointPdfSaveOptions {
IncludeHiddenSlides = false,
IncludeSlideBackgrounds = true,
IncludePictures = true,
IncludeTextBoxes = true,
IncludeTables = true,
IncludeCharts = true,
WarnOnPictureAspectRatioDistortion = true
};
presentation.SaveAsPdf("board-review.pdf", options);
Export to bytes or a stream
using OfficeIMO.PowerPoint;
using OfficeIMO.PowerPoint.Pdf;
using var presentation = PowerPointPresentation.Load("training.pptx");
byte[] pdfBytes = presentation.ToPdf();
using var stream = File.Create("training.pdf");
presentation.SaveAsPdf(stream);
Export speaker notes and handouts
using OfficeIMO.PowerPoint;
using OfficeIMO.PowerPoint.Pdf;
using var presentation = PowerPointPresentation.Load("training.pptx");
presentation.SaveAsPdf("training-notes.pdf", new PowerPointPdfSaveOptions {
PageLayout = PowerPointPdfPageLayout.NotesPages,
IncludeSpeakerNotes = true
});
presentation.SaveAsPdf("training-handout.pdf", new PowerPointPdfSaveOptions {
PageLayout = PowerPointPdfPageLayout.Handouts,
HandoutSlidesPerPage = 3,
IncludeSpeakerNotes = true
});
Handouts support 1, 2, 3, 4, 6, or 9 slides per landscape page. Three-up output pairs each thumbnail with notes or writing lines. Notes are read without creating missing notes parts.
Review conversion warnings
using OfficeIMO.PowerPoint;
using OfficeIMO.PowerPoint.Pdf;
using OfficeIMO.Pdf;
using var presentation = PowerPointPresentation.Load("complex-deck.pptx");
var options = new PowerPointPdfSaveOptions {
IncludeCharts = true,
IncludeAutoShapes = true
}.UseProfile(PdfExportProfile.Faithful);
options.TextFallbacks = PdfTextFallbackFeatures.Default;
options.ResourcePolicy = PdfResourcePolicy.CreateTrustedHost();
var result = presentation.TrySaveAsPdf("complex-deck.pdf", options);
if (!result.Succeeded) {
foreach (string diagnostic in result.Diagnostics) {
Console.WriteLine(diagnostic);
}
}
foreach (var warning in result.Warnings) {
Console.WriteLine($"{warning.Source}: {warning.Message}");
}
result.Report.RequireNoErrorWarnings();
What it maps
- Full-slide pages use the authored slide size; notes pages use portrait letter and handouts use landscape letter.
- Slide backgrounds, text boxes, supported pictures, supported tables, supported charts, and basic auto-shapes.
- Text box fill, outline, margins, font defaults, alignment, vertical anchoring, rich runs, and hyperlinks.
- Supported JPEG/PNG pictures through the shared PDF image pipeline.
- Full-slide PDF output always uses the native per-shape PDF renderer, including hyperlinks and rich text. Conversion no longer chooses a different renderer from document content or an option toggle.
- PNG, SVG, visual-review HTML, and notes/handout thumbnails use the shared visual snapshot; those surfaces have a different scene/raster contract and do not select the PDF engine at runtime.
- Profile presets through
PowerPointPdfSaveOptions.UseProfile(...), plus sharedTextFallbacksandResourcePolicycontrols. The balanced default uses installed fonts while denying arbitrary local and remote reads; portable deterministic mode is explicit. - Per-operation conversion warnings through
PdfDocumentConversionResult.ReportorPdfSaveResult.Report.
Import PDF pages
The general PDF route reconstructs supported page content as native slide objects. This is a new semantic projection, not recovery of the original slide deck: unsupported or ambiguous content remains explicit in the conversion report.
using OfficeIMO.PowerPoint.Pdf;
using OfficeIMO.Pdf;
PdfDocument pdf = PdfDocument.Open("handout.pdf");
PdfPowerPointConversionReport report = pdf.SaveAsPowerPoint("handout-editable.pptx");
foreach (var page in report.EditablePages) {
Console.WriteLine(
$"Page {page.PageNumber}: {page.TextBoxCount} text boxes, " +
$"{page.TableCount} tables, {page.ShapeCount} shapes, {page.ImageCount} images");
}
Use the explicit visual profile when a page image is the intended result. Each image is movable and resizable, but text, vectors, charts, and tables inside it are not editable:
var visual = PdfPowerPointImportOptions.CreateVisualPages();
PdfPowerPointConversionReport visualReport = pdf.SaveAsPowerPoint(
"handout-visual.pptx",
visual);
foreach (var page in visualReport.VisualPages) {
Console.WriteLine($"PDF page {page.PageNumber}, slide {page.SlideIndex + 1}");
}
This is a new semantic projection, not recovery of the original slide deck. Original charts, groups, themes, animations, notes, and authoring intent cannot be recovered reliably from arbitrary PDFs; omissions and simplifications remain explicit warnings.
Use hybrid mode when the original page must remain visible while detected tables stay editable. Row and column caps split a large overlay across duplicate visual-page slides, and each overlay keeps the same centered, aspect-preserving page geometry as its background:
var hybrid = PdfPowerPointImportOptions.CreateHybrid();
hybrid.MaxRowsPerSlide = 18;
hybrid.MaxColumnsPerSlide = 6;
PdfPowerPointConversionReport hybridReport = pdf.SaveAsPowerPoint(
"handout-hybrid.pptx",
hybrid);
Console.WriteLine($"Editable table segments: {hybridReport.TableEntries.Count}");
Console.WriteLine($"Visual-only page content: {hybridReport.HasNonEditablePageContent}");
Use editable-table mode when detected data is more important than page appearance:
var options = PdfPowerPointImportOptions.CreateEditableTables();
options.MaxRows = 400;
options.MaxRowsPerSlide = 18;
options.MaxColumnsPerSlide = 6;
options.MergePageContinuations = true;
PdfPowerPointConversionReport report = pdf.SaveAsPowerPoint(
"financial-statement-tables.pptx",
options);
foreach (var table in report.TableEntries) {
Console.WriteLine($"Pages {string.Join(",", table.SourcePageNumbers)}, slide {table.SlideIndex + 1}");
}
Console.WriteLine($"Non-table page content detected: {report.HasOmittedPageContent}");
Current limits
- Presentation content comes from
OfficeIMO.PowerPoint; layout and PDF writing useOfficeIMO.Pdf. PdfPowerPointImportMode.Autois the options default. It resolves an opened PDF toEditableContentand an already reducedPdfLogicalDocumenttoEditableTables; useCreateVisualPages()only when one rendered page image per slide is the intended output.PdfPowerPointImportMode.EditableContentreconstructs text blocks, detected tables, safe vector primitives, and supported images as native slide objects and reports anything it cannot represent safely.PdfPowerPointImportMode.EditableTablesreconstructs detected tables and usesSourceScope/HasOmittedPageContentto expose unrelated page content.PdfPowerPointImportMode.HybridVisualAndEditableTablesretains each selected page as a visual layer and overlays bounded editable table segments at source-relative geometry.- The visual and hybrid modes accept caller-supplied fallback fonts for Base-14 and other unembedded font programs. Renderer capability diagnostics remain visible because a fallback is still a substitution, not the source font program.
- Navigation, groups, forms/controls, annotations, interactive media/animations, and complex vector or image placements are not claimed as editable slide objects; stable report warnings identify their visual-only, simplified, or omitted disposition.
Related packages
- OfficeIMO.PowerPoint - PowerPoint presentation model.
- OfficeIMO.Pdf - PDF engine.
- OfficeIMO.Markup.PowerPoint - Markup to PowerPoint rendering.
Targets and license
- Targets:
netstandard2.0,net8.0,net10.0. - License: MIT.
- Repository: EvotecIT/OfficeIMO
Dependency footprint
- External: None beyond the dependencies of its OfficeIMO format packages; no native or commercial PDF renderer.
- OfficeIMO:
OfficeIMO.PowerPoint,OfficeIMO.Pdf, andOfficeIMO.Coreown slide snapshots, PDF rendering, and reports.
See the complete OfficeIMO package map for related formats and conversion paths.
| Product | Versions 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 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- OfficeIMO.Core (>= 3.2.7)
- OfficeIMO.Pdf (>= 3.2.7)
- OfficeIMO.PowerPoint (>= 3.2.7)
-
.NETStandard 2.0
- OfficeIMO.Core (>= 3.2.7)
- OfficeIMO.Pdf (>= 3.2.7)
- OfficeIMO.PowerPoint (>= 3.2.7)
-
net10.0
- OfficeIMO.Core (>= 3.2.7)
- OfficeIMO.Pdf (>= 3.2.7)
- OfficeIMO.PowerPoint (>= 3.2.7)
-
net8.0
- OfficeIMO.Core (>= 3.2.7)
- OfficeIMO.Pdf (>= 3.2.7)
- OfficeIMO.PowerPoint (>= 3.2.7)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on OfficeIMO.PowerPoint.Pdf:
| Package | Downloads |
|---|---|
|
Ank.DocToolkit
Convert HTML to PDF and DOCX in C# without a browser - pure managed, no Chromium, no wkhtmltopdf, no native binaries, no LibreOffice, no Office interop. Also converts Markdown to DOCX and PDF; renders DOCX, XLSX and PPTX to PDF; exports DOCX to HTML/Markdown and XLSX to CSV/HTML; reads legacy Word 97-2003 .doc files; reads text out of a PDF; creates/edits DOCX, XLSX and PPTX; password-protects PDF, DOCX, XLSX and PPTX; and inspects and validates digital signatures in DOCX, XLSX and PPTX. Runs on Linux, Windows, macOS and arm64, and makes no network calls at runtime. |
|
|
OfficeIMO.OpenDocument.Odp.Pdf
Bidirectional, loss-aware ODP and PDF conversion through the PowerPoint semantic engine. |
|
|
OfficeIMO.Workflows
Typed local document workflows that compose first-party OfficeIMO conversion, PDF, and provenance capabilities. |
|
|
OfficeIMO.OpenDocument.Pdf
Direct loss-aware OpenDocument text, spreadsheet, and presentation to PDF adapters. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.4.4 | 243 | 9/27/2026 |
| 3.4.3 | 318 | 9/12/2026 |
| 3.4.2 | 227 | 9/9/2026 |
| 3.4.1 | 222 | 9/7/2026 |
| 3.4.0 | 170 | 9/6/2026 |
| 3.3.0 | 36,521 | 9/2/2026 |
| 3.2.7 | 3,440 | 8/29/2026 |
| 3.2.6 | 2,905 | 8/22/2026 |
| 3.2.5 | 231 | 8/21/2026 |
| 3.2.4 | 242 | 8/19/2026 |
| 3.2.3 | 151 | 8/17/2026 |
| 3.2.2 | 2,813 | 8/13/2026 |
| 3.2.1 | 272 | 8/11/2026 |
| 3.2.0 | 2,364 | 8/7/2026 |
| 3.1.1 | 166 | 8/7/2026 |
| 3.1.0 | 150 | 8/6/2026 |
| 3.0.3 | 183 | 7/27/2026 |
| 3.0.2 | 164 | 7/26/2026 |
| 3.0.1 | 426 | 7/26/2026 |
| 3.0.0 | 475 | 7/20/2026 |