首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Apache表示中获取AnimationInfo

如何从Apache表示中获取AnimationInfo
EN

Stack Overflow用户
提问于 2017-08-12 11:29:22
回答 1查看 491关注 0票数 0

有一个名为AnimationInfo的类,它应该从演示中提供动画信息。但我运气不好我没能得到。

代码语言:javascript
复制
List<XSLFShape> shapes = slide.getShapes();
for (XSLFShape shape: shapes) {
  //Need to get animation of this shape here
}

有人能帮我吗?谢谢。

PS:我正在使用3.17版本的POI。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-13 21:08:16

如果只检测动画,则可以检查工作表的时间信息,该信息很可能标识动画的存在,也就是说,在动画被添加并再次删除时,您可以获得假阳性。此外,您需要检查所有的幻灯片,直到找到一个动画。

代码语言:javascript
复制
import java.io.FileInputStream;

import org.apache.poi.hslf.record.Record;
import org.apache.poi.hslf.record.RecordContainer;
import org.apache.poi.hslf.record.RecordTypes;
import org.apache.poi.hslf.usermodel.HSLFSlide;
import org.apache.poi.sl.usermodel.Slide;
import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.sl.usermodel.SlideShowFactory;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class AnimCheck {
    private static final int timingRecordPath[] = {
        RecordTypes.ProgTags.typeID,
        RecordTypes.ProgBinaryTag.typeID,
        RecordTypes.BinaryTagData.typeID,
        0xf144
    };


    public static void main(String[] args) throws Exception {
        SlideShow<?,?> ppt = SlideShowFactory.create(new FileInputStream("no_anim.pptx"));
        Slide<?,?> slide = ppt.getSlides().get(0);
        boolean hasTiming;
        if (slide instanceof XSLFSlide) {
            XSLFSlide xsld = (XSLFSlide)slide;
            hasTiming = xsld.getXmlObject().isSetTiming();
        } else {
            HSLFSlide hsld = (HSLFSlide)slide;
            Record lastRecord = hsld.getSheetContainer();
            boolean found = true;
            for (int ri : timingRecordPath) {
                lastRecord = ((RecordContainer)lastRecord).findFirstOfType(ri);
                if (lastRecord == null) {
                    found = false;
                    break;
                }
            }
            hasTiming = found;
        }
        ppt.close();
        System.out.println(hasTiming);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45649724

复制
相关文章

相似问题

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