Aspose.Slides.NET 17.5.0

Aspose.Slides for .NET

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.

There is a newer version of this package available.
See the version list below for details.
Install-Package Aspose.Slides.NET -Version 17.5.0
dotnet add package Aspose.Slides.NET --version 17.5.0
<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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

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>");
}
}

Dependencies

This package has no dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
19.6.0 1,290 6/25/2019
19.5.0 2,356 5/31/2019
19.4.0 3,599 4/26/2019
19.3.0 2,281 4/3/2019
19.2.0 6,285 2/28/2019
19.1.0 7,074 1/30/2019
18.12.0 4,278 12/27/2018
18.11.0 3,627 11/30/2018
18.10.0 10,834 10/30/2018
18.9.0 3,165 9/30/2018
18.8.0 3,462 8/29/2018
18.7.0 9,256 7/27/2018
18.6.0 10,189 7/1/2018
18.5.0 5,589 5/30/2018
18.4.0 2,453 5/3/2018
18.3.0 3,097 4/1/2018
18.2.1 3,511 3/7/2018
18.2.0 1,906 2/28/2018
18.1.0 2,890 1/30/2018
17.12.1 4,843 12/26/2017
17.12.0 808 12/16/2017
17.11.0 1,283 11/30/2017
17.10.0 3,975 10/31/2017
17.9.1 3,459 10/12/2017
17.9.0 1,423 10/2/2017
17.8.0 9,332 8/30/2017
17.7.0 6,096 7/31/2017
17.6.0 2,237 7/1/2017
17.5.0 1,997 5/31/2017
17.4.0 2,567 4/28/2017
17.3.0 2,965 4/2/2017
17.2.0 7,256 3/1/2017
17.1.0 3,133 1/31/2017
16.12.1 3,165 1/16/2017
16.12.0 1,531 12/27/2016
16.11.0 2,346 11/30/2016
16.10.0 2,317 11/4/2016
16.9.0 2,943 10/12/2016
16.8.0 2,876 9/27/2016
16.7.0 1,504 8/22/2016
16.6.0 16,198 7/15/2016
16.5.0 3,118 6/16/2016
16.4.0 3,360 5/16/2016
16.3.0 7,826 4/11/2016
16.2.0 4,260 3/17/2016
16.1.0 5,875 2/4/2016
15.11.0 9,167 1/11/2016
15.10.0 9,181 12/10/2015
15.9.0 5,467 11/6/2015
15.8.1 913 10/16/2015
15.8.0 1,208 10/5/2015
15.7.0 3,140 9/3/2015
15.6.0 7,123 7/22/2015
15.5.0 2,685 6/16/2015
15.4.0 1,798 5/14/2015
15.3.1 1,001 4/23/2015
15.3.0 665 4/14/2015
15.2.0 8,733 3/6/2015
15.1.0 1,221 2/3/2015
14.10.0 4,569 11/28/2014
14.9.0 1,479 11/11/2014
14.8.1 1,379 10/24/2014
14.8.0 620 10/16/2014
14.7.0 1,825 9/7/2014
14.6.0 1,129 8/6/2014
14.5.0 3,070 7/16/2014
14.4.0 1,741 6/2/2014
14.3.0 1,956 5/6/2014
14.2.0 1,136 3/24/2014
14.1.2 1,545 2/17/2014
14.1.1 619 2/10/2014
14.1.0.2 537 2/6/2014
13.12.0 1,476 12/30/2013
8.4.2 4,537 6/5/2014
8.4.1 1,130 5/6/2014
8.4.0 757 3/3/2014
8.3.0.1 645 2/3/2014
8.2.0 592 12/27/2013
8.1.0 4,873 12/16/2013
8.0.0 1,622 10/25/2013
7.9.0 986 10/8/2013
7.8.0 709 9/3/2013
7.7.0 2,981 8/4/2013
7.6.0 777 7/5/2013
7.5.0 1,015 5/27/2013
7.4.0 7,297 4/24/2013
7.3.0 803 4/10/2013
7.2.0 1,028 3/8/2013
7.1.0 3,107 1/28/2013
7.0.0 829 12/31/2012
6.9.0 778 12/10/2012
6.8.0 845 10/30/2012
6.7.0 1,102 10/4/2012
6.6.0 708 9/13/2012
6.5.0 821 7/27/2012
6.4.0 738 6/27/2012
6.3.0 664 5/29/2012
6.2.0 707 5/7/2012
6.1.0 731 3/28/2012
6.0.0 703 3/2/2012
5.9.0.1 722 2/16/2012
5.9.0 1,123 2/16/2012
Show less