将 Spotfire 图形导出到 PowerPoint 的脚本
Script to Export Spotfire Graphic to PowerPoint
我正在尝试将活动页面导出到现有的 PowerPoint 演示文稿中。我知道如何从标题栏执行此操作,但我想将其合并到我正在编写的 IronPython 代码中,这样我就可以一次制作多张幻灯片。
谢谢,
约瑟夫
这将打开 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
它们在 Spotfire API 中。每个页面都有一堆可视化。看看下面的代码片段,您可能会有所了解。
foreach (Spotfire.Dxp.Application.Page page in SpotfireDocument.Pages)
allVisuals.AddRange(page.Visuals);
// in my case SpotfireDocument extends {Spotfire.Dxp.Application.Document}
但是,这里有人知道如何查看整个活动页面吗?上面的方法将在活动页面上给出子视觉的快照,而不是整个页面本身。
我正在尝试将活动页面导出到现有的 PowerPoint 演示文稿中。我知道如何从标题栏执行此操作,但我想将其合并到我正在编写的 IronPython 代码中,这样我就可以一次制作多张幻灯片。
谢谢, 约瑟夫
这将打开 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
它们在 Spotfire API 中。每个页面都有一堆可视化。看看下面的代码片段,您可能会有所了解。
foreach (Spotfire.Dxp.Application.Page page in SpotfireDocument.Pages)
allVisuals.AddRange(page.Visuals);
// in my case SpotfireDocument extends {Spotfire.Dxp.Application.Document}
但是,这里有人知道如何查看整个活动页面吗?上面的方法将在活动页面上给出子视觉的快照,而不是整个页面本身。