Aspose.Slides for .NET 19.12 Release Notes

SLIDESNET-41570Random NullReferenceException in Save while saving PPTM to PPTInvestigation
SLIDESNET-41354Security review for Aspose.SlidesInvestigation
SLIDESNET-33820Add support for document digital signingEnhancement
SLIDESNET-41274Add color to DataPoints Enhancement
SLIDESNET-41487Support for generated PDF to restrict printingEnhancement
SLIDESNET-41510PDF access permissionsEnhancement
SLIDESNET-41184Slides are not placed in to proper sectionsEnhancement
SLIDESNET-38950ODP presenatation bullets numbering is missing in exported PDFEnhancement
SLIDESNET-41390Comment with empty text is missingBug

"On conversion to PDF the ““Specified argument was out of the range of valid values””

exception has been thrown"

SLIDESNET-41538On conversion to PDF the Null exception has been thrownBug
SLIDESNET-41544System.InvalidCastException while loading PPTBug
SLIDESNET-41535On converting to PDF the StackOverflowError has been thrownBug
SLIDESNET-41490Exception: Font is already subsituted on exporting to PDFBug
SLIDESNET-40883Text missing in generated PDFBug
SLIDESNET-41528Solid lines changed to dotted lines in exported PDFBug
SLIDESNET-41517Content missing when converting PPT slides to tiff image Bug
SLIDESNET-40634Aspose identifying GIF images as PNGBug
SLIDESNET-41534Getting slides collection from a section throws an exceptionBug
SLIDESNET-40472Formatting Hyperlink.NoAction in ppt differs from pptxBug

Data Points of Treemap and Sunburst Chart

Digital Signature in PowerPoint

Public API Changes

IDigitalSignatureCollection interface and DigitalSignatureCollection class have been added

Aspose.Slides.DigitalSignatureCollection class has been added. It implements IDigitalSignatureCollection interface and represents a collection of digital signatures that were used or will be used to sign the presentation.

IDigitalSignatureCollection declaration:

/// <summary>
/// Represents a collection of digital signatures attached to a document.
/// </summary>
public interface IDigitalSignatureCollection : IGenericCollection<IDigitalSignature>
	/// <summary>
	/// Returns the signature by index.
	/// </summary>
	IDigitalSignature this[int index] { get; }

	/// <summary>
	/// Adds the signature at the end of collection.
	/// </summary>
	/// <param name="digitalSignature">Signature to add.</param>
	void Add(IDigitalSignature digitalSignature);

	/// <summary>
	/// Removes the signature at the specified index.
	/// </summary>
	/// <param name="index">Index of the signature that should be deleted.</param>
	void RemoveAt(int index);

	/// <summary>
	/// Removes all signatures from collection.
	/// </summary>
	void Clear();

IDigitalSignature interface and DigitalSignature class have been added

Aspose.Slides.DigitalSignature class has been added. It implements IDigitalSignature interface and stores information about digital signature based on certificate used or will be used to sign the presentation.

IDigitalSignature declaration:

/// <summary>
/// Digital signature in signed file.
/// </summary>
public interface IDigitalSignature
	/// <summary>
	/// Certificate object that was used to sign the document.
	/// Read-only <see cref="X509Certificate2"/>.
	/// </summary>
	X509Certificate2 Certificate { get; }

	/// <summary>
	/// If this digital signature is valid and the document has not been tampered with, this value will be true.
	/// Read-only <see cref="bool"/>.
	/// </summary>
	bool IsValid { get; }

	/// <summary>
	/// The time when the document was signed.
	/// Read-only <see cref="DateTime"/>.
	/// </summary>
	DateTime SignTime { get; }

	/// <summary>
	/// The purpose of signature.
	/// Read/write <see cref="string"/>.
	/// </summary>
	string Comments { get; set; }

IPresentation.DigitalSignatures property has been added

DigitalSignatures property has been added to IPresentation interface and Presentation class. It allows to access a collection of digital signatures which have been used to sign or add digital signatures which will be used to sign the presentation.

Property declaration:

/// <summary>
/// Returns the collection of signatures used to sign the presentation.
/// Read-only <see cref="IDigitalSignatureCollection"/>.
/// </summary>
IDigitalSignatureCollection DigitalSignatures { get; }

ISlideCollection.AddClone method has been added

AddClone method has been added to ISlideCollection interface and SlideCollection class. This method allows adding a slide clone into a specified section.

Method declaration:

/// <summary>
/// Adds a copy of a specified slide to the end of the specified section.
/// </summary>
/// <code>
/// [C#]
/// using (IPresentation presentation = new Presentation())
/// {
///     presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 200, 50, 300, 100);
///     presentation.Sections.AddSection("Section 1", presentation.Slides[0]);
///     ISection section2 = presentation.Sections.AppendEmptySection("Section 2");
///     presentation.Slides.AddClone(presentation.Slides[0], section2);
///     // Now the second section contains a copy of the first slide.
/// }
/// </code>
/// <param name="sourceSlide">Slide to clone.</param>
/// <param name="section">Section for a new slide.</param>
/// <returns>New slide.</returns>
/// <exception cref="ArgumentNullException"/>
/// <exception cref="PptxEditException"/>
ISlide AddClone(ISlide sourceSlide, ISection section);

IPdfOptions.AccessPermissions property has been added

AccessPermissions property has been added to IPdfOptions interface and PdfOptions class. All possible values of this property are defined in the PdfAccessPermissions enumeration. These values allow you to restrict access rights to a PDF document such as printing, modify the contents, copy text and graphics, add or modify text annotations, create or modify interactive form fields, extract text and graphics in support of accessibility to users with disabilities, create bookmarks, manipulate pages, etc. The values of this enumeration may be combined.


The example below demonstrates how to set access permissions to a PDF document only for printing in high quality.

var pdfOptions = new PdfOptions();
pdfOptions.Password = "my_password";
pdfOptions.AccessPermissions = PdfAccessPermissions.PrintDocument | PdfAccessPermissions.HighQualityPrint;

using (var presentation = new Presentation())
  presentation.Save(pdfFilePath, SaveFormat.Pdf, pdfOptions);