Aspose.Slides for .NET一种独特的表示处理API,使应用程序可以读取,编写,修改和转换PowerPoint演示文稿。支持大多数Microsoft PowerPoint格式进行处理和操做。此外,API提供了许多高级功能,例如打印和渲染演示幻灯片到固定布局格式,HTML和图像。ide
Aspose.Slides for .NET更新至v19.5,开始评估PDF转换的时间花费,新增支持将SVG图像转换为形状!svg
【下载Aspose.Words for .NET最新试用版】布局
key | 概述 | 类别 |
---|---|---|
SLIDESNET-41051 | PDF转换的时间花费评估 | 调查 |
SLIDESNET-41059 | Aspose.Slides for .NET:没有文本的形状的栅格化或矢量化 | 新功能 |
SLIDESNET-41015 | 经过API获取默认表格背景 | 新功能 |
SLIDESNET-40727 | 支持将SVG图像转换为形状 | 新功能 |
SLIDESNET-40856 | 支持Size表示气泡图的属性 | 新功能 |
SLIDESNET-40730 | 在Aspose.Slides中支持Office 365 | 新功能 |
SLIDESNET-40237 | 支持在生成的PPT中隐藏左侧幻灯片缩略图窗格 | 新功能 |
SLIDESNET-40870 | 支持Aspose.Slides中的评论回复 | 新功能 |
SLIDESNET-39057 | 支持设置图表外部数据源工做簿路径 | 新功能 |
SLIDESNET-40852 | 支持漏斗图和2D地图 | 新功能 |
SLIDESNET-41034 | 使用发言者备注进行渲染时,页码不正确 | Bug修复 |
SLIDESNET-41049 | OLE嵌入对象的图标在单击后更改 | Bug修复 |
更多更新细则请参考:【Aspose.Slides for .NET v19.5更新说明】ui
新的属性ParentComment添加到IComment接口和Comment类中。它容许获取或设置父注释,从而以注释和回复的层次结构的形式建立对话框。this
注意:若是设置ParentComment致使循环引用,则会抛出类型为PptxEditException的异常。spa
下面的代码段显示了添加一些注释和一些回复的示例:rest
using (Presentation pres =
new
Presentation())
{
// Add comment
ICommentAuthor author1 = pres.CommentAuthors.AddAuthor(
"Author_1"
,
"A.A."
);
IComment comment1 = author1.Comments.AddComment(
"comment1"
, pres.Slides[
0
],
new
PointF(
10
,
10
), DateTime.Now);
// Add reply for comment1
ICommentAuthor author2 = pres.CommentAuthors.AddAuthor(
"Autror_2"
,
"B.B."
);
IComment reply1 = author2.Comments.AddComment(
"reply 1 for comment 1"
, pres.Slides[
0
],
new
PointF(
10
,
10
), DateTime.Now);
reply1.ParentComment = comment1;
// Add reply for comment1
IComment reply2 = author2.Comments.AddComment(
"reply 2 for comment 1"
, pres.Slides[
0
],
new
PointF(
10
,
10
), DateTime.Now);
reply2.ParentComment = comment1;
// Add reply to reply
IComment subReply = author1.Comments.AddComment(
"subreply 3 for reply 2"
, pres.Slides[
0
],
new
PointF(
10
,
10
), DateTime.Now);
subReply.ParentComment = reply2;
IComment comment2 = author2.Comments.AddComment(
"comment 2"
, pres.Slides[
0
],
new
PointF(
10
,
10
), DateTime.Now);
IComment comment3 = author2.Comments.AddComment(
"comment 3"
, pres.Slides[
0
],
new
PointF(
10
,
10
), DateTime.Now);
IComment reply3 = author1.Comments.AddComment(
"reply 4 for comment 3"
, pres.Slides[
0
],
new
PointF(
10
,
10
), DateTime.Now);
reply3.ParentComment = comment3;
// Display hierarchy on console
ISlide slide = pres.Slides[
0
];
var
comments = slide.GetSlideComments(
null
);
for
(
int
i =
0
; i < comments.Length; i++)
{
IComment comment = comments[i];
while
(comment.ParentComment !=
null
)
{
Console.Write(
"\t"
);
comment = comment.ParentComment;
}
Console.Write(
"{0} : {1}"
, comments[i].Author.Name, comments[i].Text);
Console.WriteLine();
}
// Remove comment1 and all its replies
comment1.Remove();
}
|
普通视图由三个内容区域组成:幻灯片自己,侧面内容区域和底部内容区域。此信息容许应用程序将其视图状态保存到文件中,以便在从新打开时视图处于与上次保存演示文稿时相同的状态。添加了属性IViewProperties.NormalViewProperties以提供对演示文稿的普通视图属性的访问。添加了INormalViewProperties,INormalViewRestoredProperties 接口及其后代 SplitterBarStateType枚举。code
INormalViewPropertiesorm
INormalViewRestoredProperties对象
using (Presentation pres =
new
Presentation())
{
pres.ViewProperties.NormalViewProperties.HorizontalBarState = SplitterBarStateType.Restored;
pres.ViewProperties.NormalViewProperties.VerticalBarState = SplitterBarStateType.Maximized;
pres.ViewProperties.NormalViewProperties.RestoredTop.AutoAdjust =
true
;
pres.ViewProperties.NormalViewProperties.RestoredTop.DimensionSize =
80
;
pres.ViewProperties.NormalViewProperties.ShowOutlineIcons =
true
;
pres.Save(
"presentation.pptx"
, SaveFormat.Pptx);
}
|
新属性SubstitutePictureTitle添加到IOleObjectFrame接口和OleObjectFrame类中。它容许获取,设置或更改OLE图标的标题:
////// Returns or set the title for OleObject icon.
/// Read/write.
///////// When IsObjectIcon == false this value is ignored.
/// The string can be truncated according to the size of the Ole icon.
///string SubstitutePictureTitle { get; set; }
|
下面的代码片断显示了建立Excel对象并设置其标题的示例:
string oleSourceFile =
"ExcelObject.xlsx"
;
string oleIconFile =
"Image.png"
;
using (Presentation pres =
new
Presentation())
{
IPPImage image =
null
;
ISlide slide = pres.Slides[
0
];
// Add Ole objects
byte[] allbytes = File.ReadAllBytes(oleSourceFile);
IOleObjectFrame oof = slide.Shapes.AddOleObjectFrame(
20
,
20
,
50
,
50
,
"Excel.Sheet.12"
, allbytes);
oof.IsObjectIcon =
true
;
// Add image object
byte[] imgBuf = File.ReadAllBytes(oleIconFile);
using (MemoryStream ms =
new
MemoryStream(imgBuf))
{
image = pres.Images.AddImage(
new
Bitmap(ms));
}
oof.SubstitutePictureFormat.Picture.Image = image;
// Set caption to OLE icon
oof.SubstitutePictureTitle =
"Caption example"
;
}
|
BubbleSizeRepresentation指定气泡图表中气泡大小值的表示方式。可能的值有:BubbleSizeRepresentationType.Area和 BubbleSizeRepresentationType.Width。所以,添加了BubbleSizeRepresentationType枚举以指定将数据表示为气泡图大小的可能方式。
using (Presentation pres =
new
Presentation())
{
IChart chart = pres.Slides[
0
].Shapes.AddChart(ChartType.Bubble,
50
,
50
,
600
,
400
,
true
);
chart.ChartData.SeriesGroups[
0
].BubbleSizeRepresentation = BubbleSizeRepresentationType.Width;
pres.Save(
"Presentation.pptx"
, SaveFormat.Pptx);
}
|
添加了新的ISvgImage接口来表示SVG图像:
////// Represents an SVG image.
///[ComVisible(true), Guid("8BB43C22-78D1-4032-A149-82FCD3992F0F"), CsToCppPorter.CppVirtualInheritance("System.Object")]
public
interface
ISvgImage
{
////// Returns SVG content.
/// Read-only.
///string SvgContent { get; }
////// Returns SVG data.
/// Read-only.
///byte[] SvgData { get; }
////// Return callback interface used to resolve external resources during SVG documents import.
/// Read-only.
///IExternalResourceResolver ExternalResourceResolver { get; }
////// Returns base URI of the specified SVG. Used to resolve relative links.
/// Read-only.
///string BaseUri { get; }
}
|
IImageCollection接口和ImageCollection类中添加了新的AddImage方法:
////// Add an image to a presentation from SVG object. //////Svg image object///Added image.///When svgImage parameter is null.IPPImage AddImage(ISvgImage svgImage);
这些方法提供了将Svg片断插入到演示文稿的图像集合的功能:
using (
var
p =
new
Presentation())
{
string svgContent = File.ReadAllText(svgPath);
ISvgImage svgImage =
new
SvgImage(svgContent);
IPPImage ppImage = p.Images.AddImage(svgImage);
p.Slides[
0
].Shapes.AddPictureFrame(ShapeType.Rectangle,
0
,
0
, ppImage.Width, ppImage.Height, ppImage);
p.Save(outPptxPath, SaveFormat.Pptx);
}
|
using (
var
p =
new
Presentation())
{
string svgContent = File.ReadAllText(
new
Uri(
new
Uri(baseDir),
"image1.svg"
).AbsolutePath);
ISvgImage svgImage =
new
SvgImage(svgContent,
new
ExternalResourceResolver(), baseDir);
IPPImage ppImage = p.Images.AddImage(svgImage);
p.Slides[
0
].Shapes.AddPictureFrame(ShapeType.Rectangle,
0
,
0
, ppImage.Width, ppImage.Height, ppImage);
p.Save(outPptxPath, SaveFormat.Pptx);
}
|
新属性SvgImage已经添加到IPPImage接口和PPImage类:
////// Returns or sets ISvgImage object//////This value indicates that this image has been created from svg.ISvgImage SvgImage { get; set; }
|
IShapeCollection接口和ShapeCollection类中添加了新的AddGroupShape方法:
////// Creates a new GroupShape, fills it with converted shapes from SVG and adds it to the end of the collection.
//////Svg image object///The X coordinate for the left side of the shape group frame.
///The Y coordinate for the top side of the shape group frame.///The width of the group of the shape group frame.
///The height of a group of the shape group frame.
///Created GroupShape object.
IGroupShape AddGroupShape(ISvgImage svgImage, float x, float y, float width, float height);
|
此方法容许将表示SVG数据的SvgImage对象转换为形状组:
using (Presentation pres =
new
Presentation(pptxFileName))
{
PictureFrame pFrame = pres.Slides[
0
].Shapes[
0
]
as
PictureFrame;
ISvgImage svgImage = pFrame.PictureFormat.Picture.Image.SvgImage;
if
(svgImage !=
null
)
{
// Convert svg image into group of shapes
IGroupShape groupShape = pres.Slides[
0
].Shapes.AddGroupShape(svgImage, pFrame.Frame.X, pFrame.Frame.Y,
pFrame.Frame.Width, pFrame.Frame.Height);
// remove source svg image from presentation
pres.Slides[
0
].Shapes.Remove(pFrame);
}
}
|
ASPOSE技术交流QQ群(642018183)已开通,各种资源及时分享,欢迎交流讨论!