【发布时间】:2020-01-08 10:22:33
【问题描述】:
当前行为: 我正在使用 Aspose Slides 生成 PowerPoint 演示文稿,并且在几张幻灯片中添加了一些带有连接器的图表(简单矩形)。
我想要达到的目标: 我希望有可能在我的网络应用程序中手动调整一些形状/连接器的位置,并将这些调整反映在最终的 powerpoint 文件中。
示例:
下一个代码,例如正在创建 3 个矩形和其中 2 个之间的连接器。此连接器正在穿过第三个矩形,我希望用户进行最终调整,以移动相交的矩形或重新排列连接器本身
using (var presentation = new Presentation())
{
var slide = presentation.Slides[0];
var primaryShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 50, 100, 30);
primaryShape.TextFrame.Text = "shape 1";
var targetShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 350, 250, 100, 30);
targetShape.TextFrame.Text = "shape 2";
var intersectedShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 300, 180, 100, 30);
intersectedShape.TextFrame.Text = "intersected shape";
var arrow = slide.Shapes.AddConnector(ShapeType.CurvedConnector2, 0, 0, 10, 10, true);
arrow.LineFormat.FillFormat.FillType = FillType.Solid;
arrow.LineFormat.FillFormat.SolidFillColor.Color = System.Drawing.Color.Red;
arrow.StartShapeConnectionSiteIndex = 3;
arrow.StartShapeConnectedTo = primaryShape;
arrow.EndShapeConnectedTo = targetShape;
arrow.EndShapeConnectionSiteIndex = 0;
presentation.Save(fileNameToSave, Aspose.Slides.Export.SaveFormat.Pptx);
}
我的尝试和问题:
1) 我尝试在 Angular 图表框架中显示我的图表,因为我知道矩形的位置和连接器的类型。问题:Aspose 没有提供连接器通过的确切信息,例如它们是否与某些形状重叠。同样的问题是用于保存返回过程。如果某个连接器与形状交叉,我将在我的网络应用程序中对其进行调整 - 我无法将其 1 对 1 保存在 powerpoint 幻灯片中。 一般来说,这里的问题是我正在介绍我自己的关于如何绘制连接器的规则,并且它符合 powerpoint 引擎规则。
2) 我尝试将图表导出为 SVG,以便对 SVG 对象进行一些操作,然后将其导入回来。 问题:SVG 将连接器表示为带有一些连接器图像的矩形。没有连接信息,什么都没有。此外,在从 SVG 导入回 Powerpoint 的过程中 - 结果是完全不可预测的,形状的连接不会被存储。 PPT 对以后的操作变得毫无用处。
问题
还有其他的这种操纵方式吗? 也许是另一种方法——比如使用本机 Office API?我也在考虑任何嵌入式调整的方式,例如有一个 iframe,我只能在其中显示我的图表(从初始文件中提取)并允许调整,然后将其导入回来。在这种情况下,它将保证 1 对 1 的关系,并且我不会在中间抛出我自己的绘图规则,但我没有发现任何可以实现这种行为的方法。只有 Office 365,但不能以我知道的方式集成。
感谢您的建议
【问题讨论】:
标签: web powerpoint aspose-slides