有没有办法在网络应用程序中调整 Powerpoint 图表?
Is there a way to adjust Powerpoint chart inside of web application?
当前行为:
我正在使用 Aspose Slides 生成 PowerPoint 演示文稿,并在几张幻灯片中添加一些带有连接器的图表(简单矩形)。
我想达到的目标:
我希望能够在我的 Web 应用程序中手动调整一些 shapes/connectors 位置,并在最终的 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,但据我所知无法集成。
感谢您的任何建议
我已观察到您的要求,很遗憾地告诉您,目前 Aspose.Slides 中没有规定 return 幻灯片上连接点的实际 X、Y 坐标。但是,我们在我们的问题跟踪系统中创建了一个新的功能请求,ID 为 SLIDESNET-41675,它将 return 幻灯片上连接点的坐标。使用这些点,您可以绘制任意线并设计您自己的逻辑(如果该线穿过任何已添加的形状)。希望这个功能实现后对你有所帮助。
就您关于将 SVG 用于幻灯片的第二点而言,我想分享一下,当您将 SVG 导入幻灯片时,它是作为图像导入的,而不是作为幻灯片对象或形状导入的。如果您在将 SVG 导入幻灯片时遇到任何问题,请与我们分享源 SVG 和生成的 PPTX,我们将尽力为您提供进一步的帮助。
我在 Aspose 担任支持开发人员/传播者。
当前行为: 我正在使用 Aspose Slides 生成 PowerPoint 演示文稿,并在几张幻灯片中添加一些带有连接器的图表(简单矩形)。
我想达到的目标: 我希望能够在我的 Web 应用程序中手动调整一些 shapes/connectors 位置,并在最终的 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,但据我所知无法集成。
感谢您的任何建议
我已观察到您的要求,很遗憾地告诉您,目前 Aspose.Slides 中没有规定 return 幻灯片上连接点的实际 X、Y 坐标。但是,我们在我们的问题跟踪系统中创建了一个新的功能请求,ID 为 SLIDESNET-41675,它将 return 幻灯片上连接点的坐标。使用这些点,您可以绘制任意线并设计您自己的逻辑(如果该线穿过任何已添加的形状)。希望这个功能实现后对你有所帮助。
就您关于将 SVG 用于幻灯片的第二点而言,我想分享一下,当您将 SVG 导入幻灯片时,它是作为图像导入的,而不是作为幻灯片对象或形状导入的。如果您在将 SVG 导入幻灯片时遇到任何问题,请与我们分享源 SVG 和生成的 PPTX,我们将尽力为您提供进一步的帮助。
我在 Aspose 担任支持开发人员/传播者。