Есть ли способ настроить диаграмму Powerpoint внутри веб-приложения?

Текущее поведение: я создаю презентацию 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 становится бесполезным для последующих манипуляций.

Вопросы

Есть ли другой способ такой манипуляции? Может быть, другой подход — например, использование собственного API Office? Я также думал о любом способе встроенной настройки, например. чтобы иметь Iframe, в котором я могу отображать только свою диаграмму (извлеченную из исходного файла) и разрешать корректировки, а затем импортировать ее обратно. В этом случае будет гарантировано отношение 1 к 1 и я не буду бросать в середину свои собственные правила рисования, но я не нашел ничего, чтобы добиться такого поведения. Только Office 365, но его нельзя интегрировать таким образом, как я знаю.

Спасибо за любой совет


person John Constantine    schedule 08.01.2020    source источник


Ответы (1)


@Джон Константин,

Я соблюдал ваши требования и с сожалением сообщаю, что на данный момент в Aspose.Slides нет средства, которое возвращало бы фактические координаты X, Y точек соединения на слайде. Однако мы создали новый запрос функции в нашей системе отслеживания проблем с идентификатором SLIDESNET-41675, который будет возвращать координаты точек соединения на слайде. Используя эти точки, вы можете нарисовать произвольную линию и придумать свою логику, если эта линия проходит через любую из уже добавленных фигур. Я надеюсь, что эта функция будет вам полезна при реализации.

Что касается вашего второго замечания, касающегося SVG для слайдов, я хотел бы поделиться тем, что когда вы импортируете SVG для слайдов, они импортируются как изображения, а не как объекты слайдов или фигуры. Если вы столкнулись с какой-либо проблемой при импорте SVG на слайд, поделитесь с нами исходным SVG и сгенерированным PPTX, у которых возникли проблемы с вашей стороны, и мы постараемся помочь вам в дальнейшем.

Я работаю разработчиком поддержки / евангелистом в Aspose.

person Mudassir    schedule 10.01.2020