Aspose.Slides.NET 17.9.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.9.0
dotnet add package Aspose.Slides.NET --version 17.9.0
<PackageReference Include="Aspose.Slides.NET" Version="17.9.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.9.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

There are known performance regressions in this release. They are related to new styles nesting functionality. We are working on improvements and going to prepare a fix.

SLIDESNET-38899 - Option for saving css and images separately when exporting as html
SLIDESNET-39196 - Render notes when saving as HTML
SLIDESNET-39113 - Saving into HTML with preserving original fonts
SLIDESNET-39090 - The possibility to specify fonts to process a single presentation
SLIDESNET-39125 - The font has changed in the cloned presentation
SLIDESNET-39237 - Exporting Powerpoint files to PDF is x2 slower at least
SLIDESNET-39281 - WordArt text differs from expected
SLIDESNET-38015 - When PPTX is converted to PDF, the values in chart are missing
SLIDESNET-39279 - After open and save PPTX, output file returns an error for embedded PPTX
SLIDESNET-39302 - Arrow bullets get overlapped on text in generated PDF
SLIDESNET-39303 - Text is improperly rendered in generated PDF
SLIDESNET-39304 - Text position getting changed in generated PDF and thumbnail
SLIDESNET-39306 - Text (WordArt) is improperly rendered in thumbnail
SLIDESNET-39286 - Font file is locked after call to ClearCache method
SLIDESNET-39312 - System.ArgumentException when converting specific Pptx to Ppt or Pps
SLIDESNET-39133 - Exception on copying excel chart in ppt
SLIDESNET-39221 - Border gets visible around placeholder in generated thumbnails
SLIDESNET-39235 - Timed based animation on bullet effects are lost on cloning slides
SLIDESNET-39276 - Pptx not properly converted to pdf
SLIDESNET-32445 - Missing image in exported slide SVG Image
SLIDESNET-33962 - Text missing or improperly rendered in generated SVG
SLIDESNET-35966 - Axis Labels wrapping are not as in the generated PDF file
SLIDESNET-37253 - Shadow effects lost in generated thumbnail
SLIDESNET-37609 - Footer and slide number are added to the first slide after loading and saving a ppt
SLIDESNET-37680 - Shadow is added to Text after saving ppt
SLIDESNET-37750 - Font position changes after saving ppt
SLIDESNET-38552 - Font size changes
SLIDESNET-39054 - PptxRead exception on loading presentaiton
SLIDESNET-39108 - Unexpected text shadow effect shows up
SLIDESNET-39120 - Animation dimming effect missing after saving presentation
SLIDESNET-39129 - NotImplemented Exception is thrown on adding CategoryAxisType.Auto
SLIDESNET-39131 - ArgumentException on cloning slide
SLIDESNET-39142 - Shape becomes 3D after saving ppt
SLIDESNET-39143 - Arrow shape is changed after saving ppt
SLIDESNET-39149 - Image is not getting added for table cell in exported PDF
SLIDESNET-39163 - Animation effects are lost on saving presentation
SLIDESNET-39185 - Font exception on reading a presentation in Mono MAC OS environment
SLIDESNET-39195 - Pptx not properly converted to pdf
SLIDESNET-39208 - Exception on loading presentation
SLIDESNET-39214 - Exception on loading presentation
SLIDESNET-39215 - Ppt changed after saving: hyperlinks are gone
SLIDESNET-39222 - PptxRead exception on loading presentaiton
SLIDESNET-39225 - PptxReadException on reading presentation
SLIDESNET-39233 - Slides are rendered blank or with improper orientation in exported HTML
SLIDESNET-39240 - Repair message on opening the Aspose.Slides saved presentation in MS 2010
SLIDESNET-39243 - Arrow bullets get overlapped on text in PDF
SLIDESNET-39264 - Arrow bullets changed to square in saved presentation
SLIDESNET-39268 - Exception on saving presentation
SLIDESNET-39275 - InvalidOperationException on saving the presentation
SLIDESNET-39317 - Hyperlink with Japanese characters is converted to URL encoding

Public API Changes

Added possibility to specify fonts used with a presentation

A new DocumentLevelFontSources property has been added to ILoadOptions interface. It allows to specify external fonts that are used with the presentation.

DocumentLevelFontSources property is of type IFontSources that has the following properties:

string[] FontFolders - folders that are recursively searched for font files.
byte[][] MemoryFonts - a collection of fonts represented as byte arrays.

byte[] memoryFont1 = File.ReadAllBytes("customfonts\\CustomFont1.ttf");
byte[] memoryFont2 = File.ReadAllBytes("customfonts\\CustomFont2.ttf");

ILoadOptions loadOptions = new LoadOptions();
loadOptions.DocumentLevelFontSources.FontFolders = new string[] { "assets\\fonts", "global\\fonts" };
loadOptions.DocumentLevelFontSources.MemoryFonts = new byte[][] { memoryFont1, memoryFont2 };
using (IPresentation presentation = CreatePresentation("MyPresentation.pptx", loadOptions))
{
   //work with the presentation
   //CustomFont1, CustomFont2 as well as fonts from assets\fonts & global\fonts folders and their subfolders are available to the presentation
}

The fonts that are passed with DocumentLevelFontSources property are available to the presentation throughout its lifetime and are not available outside the presentation. Consider the following example:

string[] fontFolders1 = new string[] { "assets\\fonts" };
string[] fontFolders2 = new string[] { "global\\fonts" };

byte[] memoryFont1 = File.ReadAllBytes("customfonts\\CustomFont1.ttf");
byte[] memoryFont2 = File.ReadAllBytes("customfonts\\CustomFont2.ttf");

IFontSources fontSources1 = new FontSources { FontFolders = fontFolders1, MemoryFonts = new byte[][] { memoryFont1 } };
IFontSources fontSources2 = new FontSources { FontFolders = fontFolders2, MemoryFonts = new byte[][] { memoryFont2 } };

using (IPresentation presentation1 = CreatePresentation("MyPresentation1.pptx", new LoadOptions { DocumentLevelFontSources = fontSources1 }))
using (IPresentation presentation2 = CreatePresentation("MyPresentation2.pptx", new LoadOptions { DocumentLevelFontSources = fontSources2 }))
{

   //work with the presentations
   //CustomFont1 as well as fonts from assets\fonts folder and its subfolders are available to presentation1 but not to presentation2
   //CustomFont2 as well as fonts from global\fonts folder and its subfolders are available to presentation2 but not to presentation1
}

If you need to add external fonts at application level and make it available to all presentations please use FonsLoader class. You can use them together like as follows:

byte[] globalMemoryFont = File.ReadAllBytes("customfonts\\CustomFont1.ttf");
byte[] localMemoryFont = File.ReadAllBytes("customfonts\\CustomFont2.ttf");

ILoadOptions loadOptions = new LoadOptions();
loadOptions.DocumentLevelFontSources.FontFolders = new string[] { "assets\\fonts" };
loadOptions.DocumentLevelFontSources.MemoryFonts = new byte[][] { localMemoryFont };

using (IPresentation presentation = CreatePresentation("MyPresentation.pptx", loadOptions))
{
   //work with the presentation
   //CustomFont2 as well as fonts from assets\fonts folder and its subfolders are available to the presentation
   //CustomFont1 as well as fonts from global\fonts folder and its subfolders are unavailable to the presentation
}

FontsLoader.LoadExternalFonts(new string[] { "global\\fonts" });
FontsLoader.LoadExternalFont(globalMemoryFont);

using (IPresentation presentation = CreatePresentation("MyPresentation.pptx", loadOptions))
{
   //work with the presentation
   //CustomFont1 and CustomFont2 as well as fonts from global\fonts and assets\fonts folders and their subfolders are available to the presentation
}

CategoryAxisType.Auto value has been replaced with IAxis.SetCategoryAxisTypeAutomatically() method

Method IAxis.SetCategoryAxisTypeAutomatically() sets IAxis.CategoryAxisType property with a value that is automatically determined based on axis data.
Element HtmlNotes has been added to SaveFormat enumeration

Element HtmlNotes has been added to Aspose.Slides.Export.SaveFormat enumeration. This element allows saving presentation Notes Page View into HTML format.

Code example:

using (Presentation pres = new Presentation("Presentation.pptx"))
{
   // Saving notes pages
   pres.Save("Output.html", SaveFormat.HtmlNotes);
}

Obsolete Presentation.GetPresentationText methods have been deleted

Obsolete Presentation.GetPresentationText methods have been deleted:

Aspose.Slides.Presentation.GetPresentationText(Stream stream, TextExtractionArrangingMode mode)
Aspose.Slides.Presentation.GetPresentationText(String file, TextExtractionArrangingMode mode)
Aspose.Slides.Presentation.GetPresentationText(Stream stream, TextExtractionArrangingMode mode, LoadOptions options)

Write document elements methods have been made virtual in EmbedAllFontsHtmlController class. WriteAllFonts method has been Added.

WriteDocumentStart, WriteDocumentEnd, WriteSlideStart, WriteSlideEnd, WriteShapeStart, WriteShapeEnd methods have been made virtual to provide a better support to customize generated HTML documents.

In addition, WriteAllFonts method has been added. It allows overriding the way how all fonts contained in the presentation are serialized into HTML.

Please review the example how to use overridable methods to create a custom HTML document with a link to CSS file.

public class CustomHeaderAndFontsController : EmbedAllFontsHtmlController
{
   // Custom header template
   const string Header = +"<!DOCTYPE html>\n" +
                           "<html>\n" +
                           "<head>\n" +
                           "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" +
                           "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n" +
                           "<link rel=\"stylesheet\" type=\"text/css\" href=\"{0}\">\n" +
                           "</head>";


   private readonly string m_cssFileName;

   public CustomHeaderAndFontsController(string cssFileName)
   {
       m_cssFileName = cssFileName;
   }

   public override void WriteDocumentStart(IHtmlGenerator generator, IPresentation presentation)
   {
       generator.AddHtml(string.Format(Header, m_cssFileName));
       WriteAllFonts(generator, presentation);
   }

   public override void WriteAllFonts(IHtmlGenerator generator, IPresentation presentation)
   {
       generator.AddHtml("<!-- Embedded fonts -->");
       base.WriteAllFonts(generator, presentation);
   }
}

There is the example how CustomHeaderAndFontsController can be used.

using (Presentation pres = new Presentation("pres.pptx"))
{
   CustomHeaderAndFontsController htmlController = new CustomHeaderAndFontsController("styles.css");
   HtmlOptions options = new HtmlOptions
   {
       HtmlFormatter = HtmlFormatter.CreateCustomFormatter(htmlController),
   };

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

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,000 6/25/2019
19.5.0 2,238 5/31/2019
19.4.0 3,524 4/26/2019
19.3.0 2,210 4/3/2019
19.2.0 6,217 2/28/2019
19.1.0 6,972 1/30/2019
18.12.0 4,228 12/27/2018
18.11.0 3,613 11/30/2018
18.10.0 10,691 10/30/2018
18.9.0 3,154 9/30/2018
18.8.0 3,457 8/29/2018
18.7.0 9,228 7/27/2018
18.6.0 10,032 7/1/2018
18.5.0 5,548 5/30/2018
18.4.0 2,371 5/3/2018
18.3.0 3,088 4/1/2018
18.2.1 3,505 3/7/2018
18.2.0 1,885 2/28/2018
18.1.0 2,882 1/30/2018
17.12.1 4,790 12/26/2017
17.12.0 807 12/16/2017
17.11.0 1,279 11/30/2017
17.10.0 3,965 10/31/2017
17.9.1 3,456 10/12/2017
17.9.0 1,405 10/2/2017
17.8.0 9,273 8/30/2017
17.7.0 6,093 7/31/2017
17.6.0 2,218 7/1/2017
17.5.0 1,995 5/31/2017
17.4.0 2,564 4/28/2017
17.3.0 2,965 4/2/2017
17.2.0 7,216 3/1/2017
17.1.0 3,131 1/31/2017
16.12.1 3,115 1/16/2017
16.12.0 1,531 12/27/2016
16.11.0 2,340 11/30/2016
16.10.0 2,316 11/4/2016
16.9.0 2,935 10/12/2016
16.8.0 2,871 9/27/2016
16.7.0 1,501 8/22/2016
16.6.0 16,099 7/15/2016
16.5.0 3,113 6/16/2016
16.4.0 3,339 5/16/2016
16.3.0 7,771 4/11/2016
16.2.0 4,259 3/17/2016
16.1.0 5,855 2/4/2016
15.11.0 9,139 1/11/2016
15.10.0 9,179 12/10/2015
15.9.0 5,462 11/6/2015
15.8.1 913 10/16/2015
15.8.0 1,208 10/5/2015
15.7.0 3,131 9/3/2015
15.6.0 7,084 7/22/2015
15.5.0 2,684 6/16/2015
15.4.0 1,797 5/14/2015
15.3.1 1,001 4/23/2015
15.3.0 665 4/14/2015
15.2.0 8,612 3/6/2015
15.1.0 1,219 2/3/2015
14.10.0 4,566 11/28/2014
14.9.0 1,479 11/11/2014
14.8.1 1,378 10/24/2014
14.8.0 620 10/16/2014
14.7.0 1,822 9/7/2014
14.6.0 1,129 8/6/2014
14.5.0 3,062 7/16/2014
14.4.0 1,740 6/2/2014
14.3.0 1,956 5/6/2014
14.2.0 1,135 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,475 12/30/2013
8.4.2 4,459 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,869 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,947 8/4/2013
7.6.0 777 7/5/2013
7.5.0 1,015 5/27/2013
7.4.0 7,295 4/24/2013
7.3.0 802 4/10/2013
7.2.0 1,028 3/8/2013
7.1.0 3,106 1/28/2013
7.0.0 829 12/31/2012
6.9.0 777 12/10/2012
6.8.0 844 10/30/2012
6.7.0 1,098 10/4/2012
6.6.0 707 9/13/2012
6.5.0 818 7/27/2012
6.4.0 737 6/27/2012
6.3.0 663 5/29/2012
6.2.0 706 5/7/2012
6.1.0 730 3/28/2012
6.0.0 702 3/2/2012
5.9.0.1 722 2/16/2012
5.9.0 1,122 2/16/2012
Show less