Дублирование нескольких слайдов PowerPoint с использованием docx4j - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь продублировать пару слайдов, используя docx4j, но у меня возникли некоторые проблемы.

У меня есть файл .pptx с 3 страницами, и я хочу дублировать каждую страницу несколько раз. Это мой код (на основе примеров из здесь :

    PresentationMLPackage presentationMLPackage = (PresentationMLPackage) OpcPackage.load(new File(args[0]));

    MainPresentationPart pp = (MainPresentationPart)presentationMLPackage.getParts().getParts().get(
            new PartName("/ppt/presentation.xml"));

    List<SlidePart> slideParts = pp.getSlideParts();

    int index = 1;

    for(SlidePart slidePart : slideParts){

        SlideLayoutPart layoutPart = (SlideLayoutPart)presentationMLPackage.getParts().getParts().get(new PartName("/ppt/slideLayouts/slideLayout" + index + ".xml"));
        Sld copied = XmlUtils.deepCopy(slidePart.getContents(), slidePart.getJAXBContext());

        SlidePart slide = new SlidePart(new PartName("/ppt/slides/slide" + index + ".xml"));
        slide.setContents(copied);

        pp.addSlide(1, slide);

        slide.addTargetPart(layoutPart);

        index++;
    }

    presentationMLPackage.save(new java.io.File("test.pptx"));

Мой код работает нормально без каких-либо ошибок, и когда я открываю файл, меня предупреждают об ошибке в PowerPoint, и он просит восстановить файл, и когда вы это делаете, страница пуста, и страница не дублируется.

Как мне заставить это работать правильно?

1 Ответ

0 голосов
/ 18 сентября 2018

В общем случае это не так просто.Вам нужно позаботиться о слайдах и т. Д.

По этой причине у нас есть коммерческое решение в Docx4j Enterprise, которое вы можете найти по адресу https://www.plutext.com/m/index.php/products

...