5

我正在使用 OOo SDK 构建一个 Java 应用程序,我在其中处理 OpenOffice Impress 演示文稿中的幻灯片。我知道如何获取包含单个幻灯片的对象,现在我正在寻找一种将幻灯片从演示文稿复制到另一个的方法。

这就是(缩短的)我打开文件并选择幻灯片的操作:

String filename = "file://....odp";
int offset = 2;

XComponent xSourceComponent = xComponentLoader.loadComponentFromURL(filename, "_blank", 0, loadProps);
XComponent xTargetComponent = xComponentLoader.loadComponentFromURL("private:factory/simpress", "_blank", 0, loadProps);

XDrawPages xDrawPages = ((XDrawPagesSupplier)UnoRuntime.queryInterface(
         XDrawPagesSupplier.class, xSourceComponent)).getDrawPages();

XPresentationPage xPage = (XPresentationPage)UnoRuntime.queryInterface(XPresentationPage.class,
         xDrawPages.getByIndex(offset));

基于我试图得到一个像这样的可转移对象:

XTransferable t = (XTransferable)UnoRuntime.queryInterface(
         XTransferable.class, xPage);

但这似乎不受支持。有人知道如何做到这一点吗?

4

1 回答 1

1

哦,伙计,祝你好运。大约一年前,我试图尝试做这样的事情,最终改用 Apache POI——不一定确定 OO SDK 不能做到这一点,但 API 的文档非常深奥,我无法理解出去。在 POI 中,它就像

SlideShow ss1 = new SlideShow(new FileInputStream(inputFile1));
Slide newSlide = ss.createSlide();
for (Shape shape : ss.getSlides()[0].getShapes()) {
    newSlide.addShape(shape);
}

这可能对您没有真正的帮助,因为您处理的是 OO 而不是 PPT,但是如果您迫切需要解决方案并且没有在 OpenOffice 方面获得帮助,您可能可以将 JODConverter 串在一起(http://www.artofsolving.com /opensource/jodconverter) 和 POI。

于 2011-05-09T05:50:48.847 回答