Как экспортировать отчет Tibco Spotfire в файл PPT при нажатии кнопки «Действие»

Я хочу экспортировать отчет Tibco Spotfire в формате PPT, когда пользователь нажимает кнопку. Есть ли какой-нибудь скрипт IronPython, который может делать это при срабатывании экшена?


person Aashi    schedule 17.12.2015    source источник
comment
В чем проблема, что вы пробовали?   -  person BendEg    schedule 17.12.2015
comment
stackoverflow.com/questions/31731159 /   -  person Jacek Sierajewski    schedule 17.12.2015


Ответы (1)


Это откроет 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

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

для страницы в Document.Pages: Document.ActivePageReference=page На основе кода, найденного здесь: https://tibbr.tibcommunity.com/tibbr/#!/messages/69369

person Jacek Sierajewski    schedule 17.12.2015
comment
Это решение отлично работает на клиенте, но не на WebPlayer, и я не уверен, есть ли какое-либо решение, которое будет работать. Возможно, установив PPT на сервер, откройте его через пространство имен MS Interop и сохраните где-нибудь на сервере для загрузки. - person jleviaguirre; 17.12.2015
comment
Таким образом, это должно быть связано с тем, как вы размещаете WebPlayer и имеет ли он доступ к указанной библиотеке. Чтобы устранить эту проблему, нам пришлось бы начать с сообщения об ошибке. Я не пробовал это в WebPlayer, должен признать. - person Jacek Sierajewski; 18.12.2015