【问题标题】:Duplicating multiple powerpoint slides using docx4j使用 docx4j 复制多个 powerpoint 幻灯片
【发布时间】:2019-02-22 07:31:01
【问题描述】:

我正在尝试使用 docx4j 复制几张幻灯片,但遇到了一些麻烦。

我有一个包含 3 页的 .pptx 文件,我希望将每个页面复制几次。到目前为止,这是我的代码(基于来自here 的示例:

    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 中的错误警报,它要求修复文件,当你这样做时,页面是空白的,并且页面没有重复。

我怎样才能让它正常工作?

【问题讨论】:

    标签: java powerpoint docx4j


    【解决方案1】:

    在一般情况下,这并不是那么简单。你需要照顾幻灯片等。

    因此,我们在 Docx4j Enterprise 中有一个商业解决方案,您可以在 https://www.plutext.com/m/index.php/products 找到它

    【讨论】:

    • 我知道商业解决方案,但我只是作为个人项目工作的学生,使用非企业版本没有办法吗?
    • 嗯,企业版使用 docx4j 来完成它的工作,所以原则上你也可以只使用 docx4j 来完成它,但有一点需要注意。由于您是从事个人项目的学生,请给我发电子邮件,我们会为您提供帮助。
    猜你喜欢
    • 2011-03-01
    • 2021-02-24
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    相关资源
    最近更新 更多