从 openoffice API 控制 Impress 演示窗口

Posted

技术标签:

【中文标题】从 openoffice API 控制 Impress 演示窗口【英文标题】:Control Impress presentation window from openoffice API 【发布时间】:2012-03-15 23:41:59 【问题描述】:

我目前正在尝试使用 openoffice API 从 Java 显示一个 powerpoint 演示文稿 - 我有一个公平的方法,我已经设法打开一个演示文稿并显示它。但是,有几件事我希望能够做到,但我无法通过 API 来解决:

我不希望出现主 Impress 窗口,只显示演示窗口。现在,我可以启动它以最小化属性没有问题,但是实际的演示窗口也被最小化,这是我不想要的。我也可以抓住窗口并在上面调用setVisible(false),但它在加载时仍然可见一秒钟左右。

我希望能够控制显示演示文稿的显示器(我在多显示器设置中使用它。)我想我可以抓住演示文稿的窗口并以这种方式移动它我需要,但我看不到如何 - 对于主窗口,我可以执行以下操作:

XModel xModel = UnoRuntime.queryInterface(XModel.class, xDrawDoc); xModel.getCurrentController().getFrame().getContainerWindow().blah();

...但是我还没有找到获取演示窗口的方法。我希望能够直接设置窗口的边界(x、y、宽度、高度),而不仅仅是在单个显示器上定位。

我可以接受第一点,我需要为我的用例解决的关键是第二点。

对以上内容有什么想法吗?我是一位经验丰富的 Java 程序员,但对 UNO 不熟悉。

【问题讨论】:

【参考方案1】:

似乎第二点可以通过 display 属性解决:

public void start()  
    try  
        xPresentation.setPropertyValue("Display", 1); 
     
    catch (Exception ex)  
        ex.printStackTrace(); 
     
    xPresentation.start(); 

但请注意一些事情 - 首先显示索引是基数 1,而不是 0。其次,尝试在数组中设置属性并在创建时将它们传递给 xPresentation 似乎没有任何效果 - 它只起作用对我来说,稍后设置属性如上所述。第三,它不允许像我想要的那样对窗口进行细粒度控制,只是控制演示文稿出现的显示。

【讨论】:

以上是关于从 openoffice API 控制 Impress 演示窗口的主要内容,如果未能解决你的问题,请参考以下文章

OpenOffice Basic 宏与 openoffice API

如何使用 OpenOffice API 将 HTML 文本放入 OpenOffice 文档

OpenOffice.org API 还是 LibreOffice API?

使用 OpenOffice API 抓取整个文档树

OpenOffice API - 表格的 OptimalWidth 选项(所有列)

使用 c# 操作 .ods (OpenOffice) 文件