Скрипт для экспорта графики Spotfire в PowerPoint

Я пытаюсь экспортировать активную страницу в существующую презентацию PowerPoint. Я знаю, как это сделать из строки заголовка, но я хотел бы включить это в код IronPython, который я пишу, чтобы я мог делать несколько слайдов одновременно.

Спасибо, Джозеф


person Joseph Cox    schedule 30.07.2015    source источник
comment
Похоже, что ответ от Flux выполнит свою работу, но, несмотря на это, вы можете экспортировать все страницы сразу с одним и тем же файлом - ›Экспорт -› Powerpoint и выбрать экспорт all pages или all pages (new page per visualization). Помимо интеграции Python, разве это не приведет вас к тому, чего вы хотите, или мне чего-то не хватает?   -  person clesiemo3    schedule 31.07.2015


Ответы (2)


Это откроет PowerPoint и экспортирует одну визуализацию на страницу:

from System.IO import *
from Spotfire.Dxp.Application.Visuals import VisualContent
from System.Drawing import Bitmap, Graphics, Rectangle, Point
import clr
clr.AddReference("Microsoft.Office.Interop.PowerPoint")
import Microsoft.Office.Interop.PowerPoint as PowerPoint

powerpoint = PowerPoint.ApplicationClass()
powerpoint.Visible = True
pres=powerpoint.Presentations.Add()
slideCounter = 1

for visual in Document.ActivePageReference.Visuals:
    #print visual.Title

    #export graphic to temp file
    vc = visual.As[VisualContent]()
    bm = Bitmap(2000, 1200)
    g = Graphics.FromImage(bm)
    r = Rectangle(Point(0,0), bm.Size)
    vc.Render(g, r)
    file = Path.GetTempFileName()
    bm.Save(file)

    #pp setup
    slide=pres.Slides.Add(slideCounter, PowerPoint.PpSlideLayout.ppLayoutTitleOnly)
    slideCounter = slideCounter+1
    slide.Shapes.AddPicture((file), False, True, 30, 60, 650, 400)
    title=slide.Shapes.Title
    txt=slide.Shapes.AddTextBox(1,10,500,500,100)
    title.Top=0.1
    obj=slide.Shapes.Title.TextFrame.TextRange
    obj.Font.Size=24

Вы можете пролистывать страницы с помощью:

for page in Document.Pages:
    Document.ActivePageReference=page

Скорректировано из кода, найденного здесь: https://tibbr.tibcommunity.com/tibbr/#!/messages/69369

person flux    schedule 30.07.2015
comment
Я попробовал приведенный выше код, и он дает мне следующую ошибку: File Spotfire.Dxp.Application, строка неизвестна, в Render File SystemError: попытка сделать снимок потока приложения в состоянии Executing. Пожалуйста, помогите мне - person Aparna; 02.02.2018
comment
@Aparna Снимите флажок «Выполнить в транзакции» в меню «Редактировать скрипт». Помогу. - person thebigshaikh; 09.09.2020

Они находятся в API Spotfire. На каждой странице есть набор визуализаций. Посмотрите на приведенный ниже фрагмент, и вы сможете получить представление.

foreach (Spotfire.Dxp.Application.Page page in SpotfireDocument.Pages) 
allVisuals.AddRange(page.Visuals); 
// in my case SpotfireDocument extends {Spotfire.Dxp.Application.Document}

Но кто-нибудь здесь знает, как визуализировать всю активную страницу? Вышеупомянутый метод даст привязку суб-визуального элемента к активной странице, но не ко всей странице.

person Mohit Kanojia    schedule 15.02.2019