getPresentationDetails method

void getPresentationDetails(
  1. ArchiveFile presentationFile,
  2. Presentation presentation
)

Function for processing .pptx file

Implementation

void getPresentationDetails(ArchiveFile presentationFile, Presentation presentation) {
  final fileContent = utf8.decode(presentationFile.content);
  final presentationDoc = xml.XmlDocument.parse(fileContent);
  var slidesRoot = presentationDoc.findAllElements("p:sldIdLst");
  if (slidesRoot.isNotEmpty) {
    var slides = slidesRoot.first.findAllElements("p:sldId");
    if (slides.isNotEmpty) {
      for (var slide in slides) {
        int id = 0;
        String rId = "";
        var tempId = slide.getAttribute("id");
        if (tempId != null) {
          id = int.parse(tempId);
        }
        var tempRid = slide.getAttribute("r:id");
        if (tempRid != null) {
          rId = tempRid;
        }
        presentation.slides.add(Slide(id, rId, ""));
      }
    }
  }
  var slideSz = presentationDoc.findAllElements("p:sldSz");
  if (slideSz.isNotEmpty) {
    var tempCX = slideSz.first.getAttribute("cx");
    if (tempCX != null) {
      presentation.width = int.parse(tempCX);
    }
    var tempCY = slideSz.first.getAttribute("cy");
    if (tempCY != null) {
      presentation.height = int.parse(tempCY);
    }
  }
  var masterSlidesRoot = presentationDoc.findAllElements("p:sldMasterIdLst");
  if (masterSlidesRoot.isNotEmpty) {
    var masterSlides = masterSlidesRoot.first.findAllElements("p:sldMasterId");
    if (masterSlides.isNotEmpty) {
      for (var slide in masterSlides) {
        int id = 0;
        String rId = "";
        var tempId = slide.getAttribute("id");
        if (tempId != null) {
          id = int.parse(tempId);
        }
        var tempRid = slide.getAttribute("r:id");
        if (tempRid != null) {
          rId = tempRid;
        }
        presentation.masterSlides.add(Slide(id, rId, ""));
      }
    }
  }
}