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

Текущее поведение: Я создаю презентацию 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. Но он не может быть интегрирован так, как я знаю.

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

1 Ответ

1 голос
/ 10 января 2020

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...