将OpenOffice幻灯片从一个演示文稿复制到另一个演示文稿w / Java

时间:2011-04-25 19:41:11

标签: java openoffice.org openoffice-impress

我正在使用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);

但似乎没有支持。任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分: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。