#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. А, ладно, извини, что был так резок.