Aspose.Slides.NET 17.5.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Aspose.Slides.NET --version 17.5.0                
NuGet\Install-Package Aspose.Slides.NET -Version 17.5.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="Aspose.Slides.NET" Version="17.5.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Aspose.Slides.NET --version 17.5.0                
#r "nuget: Aspose.Slides.NET, 17.5.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.
// Install Aspose.Slides.NET as a Cake Addin
#addin nuget:?package=Aspose.Slides.NET&version=17.5.0

// Install Aspose.Slides.NET as a Cake Tool
#tool nuget:?package=Aspose.Slides.NET&version=17.5.0                

Aspose.Slides is a PowerPoint management library for working with Microsoft PowerPoint files without using Microsoft PowerPoint. It allows developers to work with PPT, PPS, POT, PPTX, PPSX, POTX and ODP files on ASP.NET web applications, web services and Windows applications.

Product Compatible and additional computed target framework versions.
.NET Framework net20 is compatible.  net35 was computed.  net35-client is compatible.  net40 was computed.  net40-client is compatible.  net403 was computed.  net45 was computed.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (18)

Showing the top 5 NuGet packages that depend on Aspose.Slides.NET:

Package Downloads
Aspose.Total

Aspose.Total for .NET is the most complete package of all .NET file format APIs offered by Aspose. It empowers developers to create, edit, render, print and convert between a wide range of popular document formats within any .NET, C#, ASP.NET and VB.NET applications.

Verify.Aspose

Extends Verify (https://github.com/VerifyTests/Verify) to allow verification via Aspose.

Weavy.Core

A class library containing core business logic, data access and utility methods required by Weavy.

Aspose.Slides.WebExtensions

New Aspose.Slides HTML Export system, which allows exporting PowerPoint presentation as a highly customizable HTML/CSS/JS web document.

AsposeHelpers

Aspose helpers

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
24.12.0 4,290 12/2/2024
24.11.0 15,961 11/7/2024
24.10.0 24,609 10/8/2024
24.9.0 26,161 9/12/2024
24.8.0 56,029 8/2/2024
24.7.0 19,289 7/17/2024
24.6.0 31,826 6/11/2024
24.5.0 40,068 5/8/2024
24.4.0 36,165 4/15/2024
24.3.0 76,385 3/15/2024
24.2.0 42,475 2/16/2024
24.1.0 60,586 1/19/2024
23.12.0 93,591 12/11/2023
23.11.0 102,855 11/16/2023
23.10.0 121,406 10/19/2023
23.9.0 88,042 9/20/2023
23.8.0 65,442 8/21/2023
23.7.0 51,090 7/18/2023
23.6.0 51,269 6/26/2023
23.5.0 146,410 5/19/2023
23.4.0 128,050 4/20/2023
23.3.1 83,766 3/23/2023
23.2.0 54,430 2/27/2023
23.1.0 196,216 1/27/2023
22.12.0 210,362 12/16/2022
22.11.0 137,836 11/23/2022
22.10.0 254,050 10/18/2022
22.9.0 116,797 9/13/2022
22.8.0 64,678 8/17/2022
22.7.0 83,292 7/19/2022
22.6.0 90,927 6/24/2022
22.5.0 99,159 5/17/2022
22.4.0 93,651 4/15/2022
22.3.0 74,177 3/17/2022
22.2.0 138,842 2/16/2022
22.1.0 119,228 1/19/2022
21.12.0 86,295 12/17/2021
21.11.0 114,148 11/16/2021
21.10.0 104,851 10/7/2021
21.9.0 377,734 9/20/2021
21.8.0 97,408 8/16/2021
21.7.0 88,601 7/15/2021
21.6.0 39,649 6/17/2021
21.5.0 70,826 5/18/2021
21.4.0 92,178 4/18/2021
21.3.0 90,108 3/19/2021
21.2.0 100,400 2/16/2021
21.1.0 96,213 1/21/2021
20.12.0 97,947 12/10/2020
20.11.1 6,568 12/10/2020
20.11.0 130,984 12/23/2020
20.10.0 82,401 10/19/2020
20.9.0 24,327 9/25/2020
20.8.0 64,373 8/17/2020
20.7.0 51,816 7/17/2020
20.6.0 67,714 6/12/2020
20.5.0 64,022 5/7/2020
20.4.0 51,214 4/22/2020
20.3.0 57,992 3/23/2020
20.2.0 88,635 2/17/2020
20.1.0 69,818 1/17/2020
19.12.0 54,937 12/31/2019
19.11.0 47,760 11/27/2019
19.10.0 72,342 10/29/2019
19.9.0 65,327 9/12/2019
19.8.0 12,797 8/30/2019
19.7.0 41,152 7/26/2019
19.6.0 29,670 6/25/2019
19.5.0 20,243 5/31/2019
19.4.0 30,818 4/26/2019
19.3.0 14,434 4/3/2019
19.2.0 37,469 2/28/2019
19.1.0 86,055 1/30/2019
18.12.0 53,524 12/27/2018
18.11.0 30,065 11/30/2018
18.10.0 54,301 10/30/2018
18.9.0 18,321 9/30/2018
18.8.0 17,742 8/29/2018
18.7.0 30,882 7/27/2018
18.6.0 37,595 7/1/2018
18.5.0 17,359 5/30/2018
18.4.0 35,289 5/3/2018
18.3.0 19,083 4/1/2018
18.2.1 55,700 3/7/2018
18.2.0 31,976 2/28/2018
18.1.0 30,357 1/30/2018
17.12.1 15,587 12/26/2017
17.12.0 4,771 12/16/2017
17.11.0 7,786 11/30/2017
17.10.0 27,222 10/31/2017
17.9.1 7,443 10/12/2017
17.9.0 6,999 10/2/2017
17.8.0 56,008 8/30/2017
17.7.0 19,986 7/31/2017
17.6.0 11,709 7/1/2017
17.5.0 8,598 5/31/2017
17.4.0 9,979 4/28/2017
17.3.0 17,335 4/2/2017
17.2.0 37,895 3/1/2017
17.1.0 8,690 1/31/2017
16.12.1 15,275 1/16/2017
16.12.0 5,771 12/27/2016
16.11.0 9,437 11/30/2016
16.10.0 11,816 11/4/2016
16.9.0 8,648 10/12/2016
16.8.0 42,225 9/27/2016
16.7.0 5,320 8/22/2016
16.6.0 55,247 7/15/2016
16.5.0 13,239 6/16/2016
16.4.0 9,490 5/16/2016
16.3.0 18,492 4/11/2016
16.2.0 9,710 3/17/2016
16.1.0 22,889 2/4/2016
15.11.0 31,683 1/11/2016
15.10.0 13,776 12/10/2015
15.9.0 10,570 11/6/2015
15.8.1 4,323 10/16/2015
15.8.0 5,171 10/5/2015
15.7.0 76,700 9/3/2015
15.6.0 36,065 7/22/2015
15.5.0 11,409 6/16/2015
15.4.0 8,551 5/14/2015
15.3.1 6,620 4/23/2015
15.3.0 4,025 4/14/2015
15.2.0 42,503 3/6/2015
15.1.0 12,272 2/3/2015
14.10.0 17,482 11/28/2014
14.9.0 7,724 11/11/2014
14.8.1 4,701 10/24/2014
14.8.0 3,880 10/16/2014
14.7.0 5,086 9/7/2014
14.6.0 4,682 8/6/2014
14.5.0 8,835 7/16/2014
14.4.0 5,974 6/2/2014
14.3.0 8,410 5/6/2014
14.2.0 4,407 3/24/2014
14.1.2 6,636 2/17/2014
14.1.1 3,717 2/10/2014
14.1.0.2 3,595 2/6/2014
13.12.0 4,596 12/30/2013
8.4.2 47,484 6/5/2014
8.4.1 4,243 5/6/2014
8.4.0 6,914 3/3/2014
8.3.0.1 4,062 2/3/2014
8.2.0 3,831 12/27/2013
8.1.0 11,428 12/16/2013
8.0.0 5,012 10/25/2013
7.9.0 4,249 10/8/2013
7.8.0 3,864 9/3/2013
7.7.0 11,909 8/4/2013
7.6.0 7,218 7/5/2013
7.5.0 6,256 5/27/2013
7.4.0 10,292 4/24/2013
7.3.0 3,640 4/10/2013
7.2.0 4,295 3/8/2013
7.1.0 6,007 1/28/2013
7.0.0 6,134 12/31/2012
6.9.0 3,613 12/10/2012
6.8.0 3,988 10/30/2012
6.7.0 4,314 10/4/2012
6.6.0 3,520 9/13/2012
6.5.0 3,865 7/27/2012
6.4.0 3,612 6/27/2012
6.3.0 3,542 5/29/2012
6.2.0 3,736 5/7/2012
6.1.0 3,647 3/28/2012
6.0.0 4,005 3/2/2012
5.9.0.1 8,007 2/16/2012
5.9.0 7,287 2/16/2012

SLIDESNET-38576 - Size of SWF generated is too high
SLIDESNET-38499 - PowerPoint to SVG with shape ID
SLIDESNET-38379 - Implement using HeaderFooterManager for slide/master/layout
SLIDESNET-38608 - Exception on saving presentation
SLIDESNET-38593 - Exported file cannot be opened via Aspose.Slides
SLIDESNET-38584 - Exception on converting PPTX to PDF
SLIDESNET-38572 - PPTX not converted properly to tiff
SLIDESNET-38570 - Incorrect Presentation instantiating with empty string password
SLIDESNET-38568 - PPT not converted properly to PDF
SLIDESNET-38553 - Text changed to asterisk
SLIDESNET-38550 - Changes in Workbook doesn't get saved
SLIDESNET-38548 - PPT to tiff not properly converted
SLIDESNET-38547 - Conversion to PDF with low quality of images
SLIDESNET-38537 - Adding Doughnut chart from scratch does not work
SLIDESNET-38536 - PPT not converted properly to PDF
SLIDESNET-38527 - PPT not converted properly to PDF
SLIDESNET-38526 - Zoom problem in generated presentation
SLIDESNET-38520 - Images are not properly generated from PPT
SLIDESNET-38516 - Text are changed after saving PPT
SLIDESNET-38514 - Text becomes shorter after saving PPT
SLIDESNET-38504 - PPT changed after saving
SLIDESNET-38464 - Problems editing chart after saving PPTX
SLIDESNET-38454 - Table width is changed after saving file
SLIDESNET-38422 - Incorrect font when rendering to HTML
SLIDESNET-38299 - Footer is not working properly
SLIDESNET-37736 - Footer failed to apply in presentation
SLIDESNET-36678 - Text gets bigger

Public API Changes

HeaderFooterManager specialized classes and interfaces have been added

IBaseHeaderFooterManager, IBaseSlideHeaderFooterManager, IMasterSlideHeaderFooterManager, ILayoutSlideHeaderFooterManager, ISlideHeaderFooterManager, IPresentationHeaderFooterManager interfaces and BaseHeaderFooterManager, BaseSlideHeaderFooterManager, MasterSlideHeaderFooterManager, LayoutSlideHeaderFooterManager, SlideHeaderFooterManager, PresentationHeaderFooterManager classes have been added. These types allow managing Header Footer settings of different presentation elements.

The base IBaseHeaderFooterManager interface of all listed types has following properties and methods.

These properties allow getting value indicating that a footer, page number and date-time placeholders are present:
bool IsFooterVisible { get; }
bool IsSlideNumberVisible { get; }
bool IsDateTimeVisible { get; }

These methods allow changing footer, page number and date-time placeholders visibility:
void SetFooterVisibility(bool isVisible);
void SetSlideNumberVisibility(bool isVisible);
void SetDateTimeVisibility(bool isVisible);

These methods allow setting text to footer and date-time placeholder:
void SetFooterText(string text);
void SetDateTimeText(string text);

In addition, IMasterSlideHeaderFooterManager and ILayoutSlideHeaderFooterManager have following properties and methods to manage instance own and all childs elements Header and Footer settings.

These methods allow changing master/layout slide footer, page number, date-time placeholder and all child footer placeholders visibility. Child placeholders mean placeholders are contained on depending layout slides and depending slides. Depending layout slides and slides use and depend on master slide:
void SetFooterAndChildFootersVisibility(bool isVisible);
void SetSlideNumberAndChildSlideNumbersVisibility(bool isVisible);
void SetDateTimeAndChildDateTimesVisibility(bool isVisible);

These methods allow setting text to master/layout slide footer and date-time placeholder and all child footer placeholders. Child placeholders mean placeholders are contained on depending layout slides and depending slides. Depending layout slides and slides use and depend on master slide:
void SetFooterAndChildFootersText(string text);
void SetDateTimeAndChildDateTimesText(string text);

New properties have been added to access the added types.
IMasterSlideHeaderFooterManager IMasterSlide.HeaderFooterManager { get; }
ILayoutSlideHeaderFooterManager ILayoutSlide.HeaderFooterManager { get; }
ISlideHeaderFooterManager ISlide.HeaderFooterManager { get; }

The type of the property has been changed
IPresentationSlideHeaderFooterManager IPresentation.HeaderFooterManager { get; }

IHeaderFooterManager and class HeaderFooterManager have been marked as Obsolete.

Usage examples:
using (Presentation presentation = new Presentation("presentation.ppt"))
{
IBaseSlideHeaderFooterManager headerFooterManager = presentation.Slides[0].HeaderFooterManager;
if (!headerFooterManager.IsFooterVisible) // Property IsFooterVisible is used for indicating that a slide footer placeholder is not present.
{
headerFooterManager.SetFooterVisibility(true); // Method SetFooterVisibility is used for making a slide footer placeholder visible.
}
if (!headerFooterManager.IsSlideNumberVisible) // Property IsSlideNumberVisible is used for indicating that a slide page number placeholder is not present.
{
headerFooterManager.SetSlideNumberVisibility(true); // Method SetSlideNumberVisibility is used for making a slide page number placeholder visible.
}
if (!headerFooterManager.IsDateTimeVisible) // Property IsDateTimeVisible is used for indicating that a slide date-time placeholder is not present.
{
headerFooterManager.SetDateTimeVisibility(true); // Method SetFooterVisibility is used for making a slide date-time placeholder visible.
}
headerFooterManager.SetFooterText("Footer text"); // Method SetFooterText is used for setting text to slide footer placeholder.
headerFooterManager.SetDateTimeText("Date and time text"); // Method SetDateTimeText is used for setting text to slide date-time placeholder.
}
using (Presentation presentation = new Presentation("presentation.ppt"))
{
IMasterSlideHeaderFooterManager headerFooterManager = presentation.Masters[0].HeaderFooterManager;
headerFooterManager.SetFooterAndChildFootersVisibility(true); // Method SetFooterAndChildFootersVisibility is used for making a master slide and all child footer placeholders visible.
headerFooterManager.SetSlideNumberAndChildSlideNumbersVisibility(true); // Method SetSlideNumberAndChildSlideNumbersVisibility is used for making a master slide and all child page number placeholders visible.
headerFooterManager.SetDateTimeAndChildDateTimesVisibility(true); // Method SetDateTimeAndChildDateTimesVisibility is used for making a master slide and all child date-time placeholders visible.

headerFooterManager.SetFooterAndChildFootersText("Footer text"); // Method SetFooterAndChildFootersText is used for setting text to master slide and all child footer placeholders.
headerFooterManager.SetDateTimeAndChildDateTimesText("Date and time text"); // Method SetDateTimeAndChildDateTimesText is used for setting text to master slide and all child date-time placeholders.
}

Id property has been added to ISvgShape

Id property has been added to ISvgShape to support custom IDs of shapes in generated SVG. Below is the example of custom SVG Shape formatting controller to set custom shape IDs:
class CustomSvgShapeFormattingController : ISvgShapeFormattingController
{
private int m_shapeIndex;

public CustomSvgShapeFormattingController(int shapeStartIndex = 0)
{
m_shapeIndex = shapeStartIndex;
}

public void FormatShape(ISvgShape svgShape, IShape shape)
{
svgShape.Id = string.Format("shape-{0}", m_shapeIndex++);
}
}

New EmbedAllFontsHtmlController has been added

A new HTML Controller has been added: EmbedAllFontsHtmlController. It is used to embed all presentation fonts in HTML document. Here's an example of using this new controller:
using (Presentation pres = new Presentation("pres.pptx"))
{
// exclude default presentation fonts
string[] fontNameExcludeList = { "Calibri", "Arial" };

EmbedAllFontsHtmlController embedFontsController = new EmbedAllFontsHtmlController(fontNameExcludeList);

HtmlOptions htmlOptionsEmbed = new HtmlOptions
{
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(embedFontsController)
};

pres.Save("pres.html", SaveFormat.Html, htmlOptionsEmbed);
}

Please note that EmbedAllFontsHtmlController has parameterized constructor where an array of font names can be passed to prevent them from embedding. Some fonts, like Calibri or Arial, used in presentation are not needed to be embedded (which leads the resulting HTML document become larger) because almost every system already has them installed.

Another major feature of EmbedAllFontsHtmlController is that it supports inheritance and WriteFont method is intended to be overridden:
public virtual void WriteFont(
IHtmlGenerator generator,
IFontData originalFont,
IFontData substitutedFont,
string fontStyle,
string fontWeight,
byte[] fontData)
{
// todo: serialize font as you need
}

By default, font embedded or serialized in HTML document as bas64 string. But for example, you may create your own controller to dump files somewhere in your own file structure. Below is a sample implementation of LinkAllFontsHtmlController controller intended to write font files on disk and just add link for it in @font-face:
class LinkAllFontsHtmlController : EmbedAllFontsHtmlController
{
private readonly string m_basePath;

public LinkAllFontsHtmlController(string[] fontNameExcludeList, string basePath)
: base(fontNameExcludeList)
{
m_basePath = basePath;
}

public override void WriteFont(
IHtmlGenerator generator,
IFontData originalFont,
IFontData substitutedFont,
string fontStyle,
string fontWeight,
byte[] fontData)
{
string fontName = substitutedFont == null ? originalFont.FontName : substitutedFont.FontName;
string path = string.Format("{0}.woff", fontName); // some path sanitaze may be needed
File.WriteAllBytes(Path.Combine(m_basePath, path), fontData);

generator.AddHtml("<style>");
generator.AddHtml("@font-face { ");
generator.AddHtml(string.Format("font-family: '{0}'; ", fontName));
generator.AddHtml(string.Format("src: url('{0}')", path));

generator.AddHtml(" }");
generator.AddHtml("</style>");
}
}