0

当前行为: 我正在使用 Aspose Slides 生成 PowerPoint 演示文稿,并且在几张幻灯片中添加了一些带有连接器的图表(简单矩形)。

我想要实现的目标: 我希望能够在我的 Web 应用程序中手动调整一些形状/连接器的位置,并将这些调整反映在最终的 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,但它不能以我所知道的方式集成。

谢谢你的任何建议

4

1 回答 1

1

@约翰康斯坦丁,

我已经观察到您的要求并遗憾地分享 Aspose.Slides 中目前没有任何规定可以返回幻灯片上连接点的实际 X、Y 坐标。但是,我们在 ID SLIDESNET-41675的问题跟踪系统中创建了一个新功能请求,它将返回幻灯片上连接点的坐标。使用这些点,如果该线穿过任何已添加的形状,您可以绘制任意线并设计您自己的逻辑。我希望此功能在实施时对您有所帮助。

至于你关于 SVG 到幻灯片的第二点,我想分享一下,当你将 SVG 导入到幻灯片时,它是作为图像而不是作为幻灯片对象或形状导入的。如果您在将 SVG 导入幻灯片时遇到任何问题,请与我们分享源 SVG 和生成的 PPTX 有问题,我们将尽力为您提供进一步的帮助。

我在 Aspose 担任支持开发人员/传播者。

于 2020-01-10T12:29:22.550 回答