Скопируйте слайд OpenOffice из одной презентации в другую с Java - PullRequest
5 голосов
/ 25 апреля 2011

Я создаю Java-приложение, используя OOo SDK, где я манипулирую слайдами в презентации 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 Ответ

1 голос
/ 09 мая 2011

О человек, удачи.Я смотрел на попытку сделать что-то подобное примерно год назад и вместо этого использовал 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);
}

. Это может не очень помочь вам, поскольку вы имеете дело с ОО, а не с PPT, но если вы отчаянно нуждаетесь в решении и не получаете помощи на фронте OpenOffice, вывозможно, могли бы связать воедино JODConverter (http://www.artofsolving.com/opensource/jodconverter) и POI.

...