1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using DocumentFormat.OpenXml.Packaging;
- using HTEXLib.Builders;
- using HTEXLib.Controller;
- using HTEXLib.Models;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using System.Xml.Linq;
- namespace HTEXLib.Translator
- {
- public class PPTX2HTEXTranslator
- {
- /// <summary>
- /// pptx官方的js操作相关接口。 https://docs.microsoft.com/zh-cn/javascript/api/powerpoint?view=powerpoint-js-preview
- /// </summary>
- /// <param name="stream"></param>
- /// <returns></returns>
- public Htex Translate(Stream stream) {
- PresentationDocument presentation;
- var htexBuilder = new HtexBuilder();
- try {
- XDocument document = XDocument.Load(stream);
- presentation = PresentationDocument.FromFlatOpcDocument(document);
- } catch {
- presentation = PresentationDocument.Open(stream, false,openSettings:new OpenSettings { });
- presentation = PresentationDocument.Open(stream, false);
- }
- var pptSlides = htexBuilder.GetPPTSlides(presentation);
- double width = htexBuilder.getSlideWidth();
- double height = htexBuilder.getSlideHeight();
- int slideCounter = 1;
- Htex htex = htexBuilder.Htex;
- htex.page = pptSlides.Count;
- htex.size = new HtexSize { width = width, height = height };
- List<Slide> slides = new List<Slide>();
- List<string> lazyFiles = new List<string>();
- foreach (PPTSlide pptSlide in pptSlides)
- {
- var htexController = new HtexController(pptSlide, slideCounter, pptSlides.Count)
- {
- SlideWidth = width,
- SlideHeight = height
- };
- Slide slide = htexController.GenerateHtex();
- slide.width = width;
- slide.transition = pptSlide.slideTransition;
- slide.height = height;
- slide.help = pptSlide.note;
- slides.Add(slide);
- slideCounter++;
- lazyFiles.AddRange(pptSlide.lazyFiles);
- }
- foreach(var lzfie in lazyFiles)
- {
- htex.stores[lzfie] = new Store { path = lzfie, isLazy = true, contentType = null, url = null };
- }
- htexBuilder.presentationDocument.Close();
- GC.Collect();
- htex.slides = slides;
- htex.page = slides.Count;
- return htex;
- }
-
- }
- }
|