pptx4j: поддержка разделов / списка слайдов

#docx4j

#docx4j

Вопрос:

Существует ли какой-либо API для разделов / списков слайдов PPTx?

См http://msdn.microsoft.com/en-us/library/dd907440(v=office.12).aspx

Если нет, какие-либо предложения, как начать с этого?

Спасибо!

Ответ №1:

Я нашел способ получить нужную мне информацию.

Комментарии приветствуются.

 public static void main(String[] args) throws Exception
{
    String inputfilepath="d:\test.pptx";
    PresentationMLPackage presentationMLPackage=(PresentationMLPackage) PresentationMLPackage.load(new java.io.File(inputfilepath));
    CTExtensionList extLst = presentationMLPackage.getMainPresentationPart().getJaxbElement().getExtLst();
    for (CTExtension extension : extLst.getExt())
    {
        if ("{521415D9-36F7-43E2-AB2F-B90AF26B5E84}".equals(extension.getUri()))
        {
            Object any = extension.getAny();
            Node sectionListNode = null;
            if (any instanceof Node amp;amp; "sectionLst".equals((sectionListNode = (Node) any).getLocalName()))
            {
                for (int i = 0; i < sectionListNode.getChildNodes().getLength(); i  )
                {
                    Node sectionNode = sectionListNode.getChildNodes().item(i);
                    String sectionName = ((Element)sectionNode).getAttribute("name").toString();
                    int sectionSlides = sectionNode.getFirstChild().getChildNodes().getLength();
                    System.out.println("Section:"   sectionName   " has childs:"   sectionSlides);
                }
            }
        }
    }
}
  

Ответ №2:

Следующий метод из org.docx4j.openpackaging.parts.PresentationML.MainPresentationPart показывает, как использовать SldIdLst:

 public SlidePart getSlide(int index) throws Pptx4jException {

    List<SldId> sldIds = this.getJaxbElement().getSldIdLst().getSldId();

    int zeroBasedCount = sldIds.size() -1; 

    if (index< 0 || index>zeroBasedCount) {
        throw new Pptx4jException("No slide at index "   index   ".  (There are "   sldIds.size()   " slides) ");           
    }

    try {
        Presentation.SldIdLst.SldId entry = this.getJaxbElement().getSldIdLst().getSldId().get(index);
        return (SlidePart)this.getRelationshipsPart().getPart(entry.getRid());
    } catch (Exception e) {
        throw new Pptx4jException("Slide "   index   " not found", e);
    }

}
  

Комментарии:

1. Это не имеет никакого отношения к разделам.

2. Да, хорошо, когда я прочитал ссылку, которую вы предоставили, ваш вопрос состоял из 2 частей (поскольку пример в ссылке содержит p: sldIdLst). Я не стал переходить к разделу, потому что вы опубликовали свой ответ в то же время, когда я помогал вам.

3. А, ладно, извини, что был так резок.