2011-04-25 99 views
4

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

那(缩短)我做什么来打开文件,并选择幻灯片:

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

哦,伙计,祝你好运。我在一年前试图做类似这样的事情,并最终使用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。

+0

事实上,文档并不容易使用。目标是在OOo中有一个向导作为插件,它可以创建和填充一些幻灯片,所以我必须遵循OO的UNO API。大多数东西都在工作,但目前创建的幻灯片的布局是在代码中定义的,我希望有一个用户可以编辑的模板。 – johannes 2011-05-09 07:39:36

+0

你有没有看过ODFDOM?它看起来像它有一个幻灯片复制操作(OdfPresentationDocument.copyForeignSlide)。 – jkraybill 2011-05-10 00:00:22