首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache幻灯片母版-不生成页号页脚

Apache幻灯片母版-不生成页号页脚
EN

Stack Overflow用户
提问于 2022-04-21 13:17:03
回答 1查看 218关注 0票数 0

我有问题的幻灯片主版面,其中包括页码和静态文本。我已经在我的布局,但他们没有出现,一旦我生成演示文稿。当我进入INSTER ->页号时,我可以选择并显示它们。当我通过PowerPoint (添加带有选定布局的幻灯片)将新幻灯片添加到我生成的演示文稿中时,它将显示该页面的页码。以下是代码:

代码语言:javascript
复制
String fileName = "slidemaster-010";
            String templateLocation = "/Users/akonopko/Export/Templates/Presentation10.pptx";
            XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(templateLocation));

            XSLFSlideMaster defaultMaster = ppt.getSlideMasters().get(0);

            XSLFSlideLayout masterLayout = defaultMaster.getLayout("Master");
            XSLFSlide slide = ppt.createSlide(masterLayout);

            XSLFSlideLayout masterLayout1 = defaultMaster.getLayout("1_Custom Layout");
            XSLFSlide slide2 = ppt.createSlide(masterLayout1);

            List<XSLFShape> slideShapes = slide2.getShapes();
            for (XSLFShape shape : slideShapes) {
                if (shape.getPlaceholder() == Placeholder.TITLE) {
                    ((XSLFTextShape) shape).setText("Test Text");
                }
            }

EN

回答 1

Stack Overflow用户

发布于 2022-04-23 07:47:39

Apache只是不从XSLFSlideLayoutXMLSlideShow.createSlide(XSLFSlideLayout)复制占位符。它使用XSLFSlideLayout.copyLayout(XSLFSlide),在那里DATETIMESLIDE_NUMBERFOOTER被明确排除在外。

可以编写一个方法,从布局中复制这些占位符。这可能看起来是这样的:

代码语言:javascript
复制
 public void copyPlaceholdersFromLayout(XSLFSlideLayout layout, XSLFSlide slide) {
  for (XSLFShape sh : layout.getShapes()) {
   if (sh instanceof XSLFTextShape) {
    XSLFTextShape tsh = (XSLFTextShape) sh;
    Placeholder ph = tsh.getTextType();
    if (ph == null) continue;
    switch (ph) {
     // these are special and not copied by default
     case DATETIME:
     case SLIDE_NUMBER:
     case FOOTER:
      System.out.println(ph);
      slide.getXmlObject().getCSld().getSpTree().addNewSp().set(tsh.getXmlObject().copy());
      break;
     default:
      //slide.getSpTree().addNewSp().set(tsh.getXmlObject().copy());
      //already done
    }
   }
  }
 }

像这样被打电话:

代码语言:javascript
复制
copyPlaceholdersFromLayout(masterLayout1, slide2);

apache poi明确排除这一点可能是有原因的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71955159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档