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

joh*_*nes 5 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));
Run Code Online (Sandbox Code Playgroud)

基于我试图获得这样的可转移对象:

XTransferable t = (XTransferable)UnoRuntime.queryInterface(
         XTransferable.class, xPage);
Run Code Online (Sandbox Code Playgroud)

但这似乎并不受支持.任何人都知道如何做到这一点?

jkr*_*ill 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);
}
Run Code Online (Sandbox Code Playgroud)

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