Добавление содержимого в рамки презентации OpenOffice odp в ODFToolkit

Я хочу использовать презентацию Open Office / Libre Office в качестве шаблона и вставлять текст и изображения в слайды. Я пытаюсь использовать odftoolkit. Если у меня есть слайд с коробками, они представлены как <draw:frame> в XML

как получить доступ к ним, чтобы поместить в них изображение? Должен ли я использовать эти классы?

  • org.odftoolkit.simple.PresentationDocument
  • org.odftoolkit.simple.presentation.Slide

когда у меня есть слайд, откройте связанные методы, которые я вижу являются:

  • .getOdfElement
  • .getFrameContainerElement

но я не вижу, как выбрать кадры на слайде. Когда я открываю XML, у меня есть 5 кадров под <draw:page>.

есть такие атрибуты, как: presentation:style-name="pr2" draw:layer="layout"

1 ответов


Как прокомментировал Евгений, мне нужно было найти целевой фрейм и сделать больше работы. Нет способа добавить изображения в кадр, только в слайд. Я вошел в методы и преуспел в следующем:

DrawPageElement drawPageElement = slide.getOdfElement();
DrawFrameElement drawFrame = OdfElement.findFirstChildNode(DrawFrameElement.class, drawPageElement);
DrawImageElement image = drawFrame.newDrawImageElement();
OdfPackage mOdfPackage = odp.getPackage();
String imageRef = "/some/path/to/chart.png";

String packagePath = odp.getDocumentPath() + OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + "/" + someMethodToCreateRandomString();

mOdfPackage.insert(new URI(imageRef), packagePath, OdfFileEntry.getMediaTypeString(imageRef));
packagePath = packagePath.replaceFirst(odp.getDocumentPath(), "");
URI uri = new URI(AnyURI.encodePath(packagePath).toString());
image.setXlinkHrefAttribute(AnyURI.decodePath(uri.toString()));
image.setXlinkActuateAttribute("onLoad");
image.setXlinkShowAttribute("embed");
image.setXlinkTypeAttribute("simple");

Я надеялся на что-то ближе к GUI, потому что я думаю, что пропустил некоторые стили и лучший способ найти кадры. Но в любом случае это не плохо.