Текущее поведение: Я создаю презентацию PowerPoint с использованием Aspose Slides и добавляю несколько диаграмм (простых прямоугольников) с соединителями на нескольких слайдах.
Чего я хочу добиться: Мне бы хотелось иметь возможность вручную настраивать некоторые фигуры / положения соединителей в моем веб-приложении и отражать эти настройки в конечном файле 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. Но он не может быть интегрирован так, как я знаю.
Спасибо за любой совет