public void ReassemblePresentationWithMaster(string fileName) { var file = Path.Combine(SourceDirectory, fileName); var presentation = new PmlDocument(file); // generate presentation with all masters var onlyMaster = PresentationBuilder.BuildPresentation( new List <SlideSource> { new SlideSource(presentation, 0, 0, true) }); // publish slides with one-layout masters var slides = PresentationBuilder.PublishSlides(presentation); // compose them together using only master as the first source var sources = new List <SlideSource> { new SlideSource(onlyMaster, true) }; sources.AddRange(slides.Select(x => new SlideSource(x, false))); var newDocument = PresentationBuilder.BuildPresentation(sources); newDocument.FileName = fileName.Replace(".pptx", "_reassembledWithMaster.pptx"); newDocument.SaveAs(Path.Combine(TargetDirectory, newDocument.FileName)); var baseSize = slides.Sum(x => x.DocumentByteArray.Length) + onlyMaster.DocumentByteArray.Length; Assert.InRange(newDocument.DocumentByteArray.Length, 0.85 * baseSize, 1.1 * baseSize); }
public void ReassemblePresentation(string fileName) { var file = Path.Combine(SourceDirectory, fileName); var document = new PmlDocument(file); var slides = PresentationBuilder.PublishSlides(document); var sources = slides.Select(x => new SlideSource(x, true)).ToList(); var newDocument = PresentationBuilder.BuildPresentation(sources); newDocument.FileName = fileName.Replace(".pptx", "_reassembled.pptx"); newDocument.SaveAs(Path.Combine(TargetDirectory, newDocument.FileName)); var baseSize = slides.Sum(x => x.DocumentByteArray.Length); Assert.InRange(newDocument.DocumentByteArray.Length, 0.9 * baseSize, 1.1 * baseSize); }
public void PublishUsingPublishSlides(string sourcePath) { var targetDir = Path.Combine(TargetDirectory, Path.GetFileNameWithoutExtension(sourcePath)); if (Directory.Exists(targetDir)) { Directory.Delete(targetDir, true); } Directory.CreateDirectory(targetDir); var document = new PmlDocument(sourcePath); string title; DateTime?modified; using (var streamDoc = new OpenXmlMemoryStreamDocument(document)) { using var srcDoc = streamDoc.GetPresentationDocument(new OpenSettings { AutoSave = false }); title = srcDoc.PackageProperties.Title; modified = srcDoc.PackageProperties.Modified; } var sameTitle = 0; foreach (var slide in PresentationBuilder.PublishSlides(document)) { slide.SaveAs(Path.Combine(targetDir, Path.GetFileName(slide.FileName))); using var streamDoc = new OpenXmlMemoryStreamDocument(slide); using var slideDoc = streamDoc.GetPresentationDocument(new OpenSettings { AutoSave = false }); Assert.Equal(modified, slideDoc.PackageProperties.Modified); if (title.Equals(slideDoc.PackageProperties.Title)) { sameTitle++; } } Assert.InRange(sameTitle, 0, 4); }
public void PublishUsingPublishSlides(string sourcePath) { var targetDir = Path.Combine(TargetDirectory, Path.GetFileNameWithoutExtension(sourcePath)); if (Directory.Exists(targetDir)) { Directory.Delete(targetDir, true); } Directory.CreateDirectory(targetDir); using var srcStream = File.Open(sourcePath, FileMode.Open); var openSettings = new OpenSettings { AutoSave = false }; using var srcDoc = OpenXmlExtensions.OpenPresentation(srcStream, false, openSettings); var title = srcDoc.PackageProperties.Title ?? string.Empty; var modified = srcDoc.PackageProperties.Modified; var sameTitle = 0; foreach (var slide in PresentationBuilder.PublishSlides(srcDoc, sourcePath)) { slide.SaveAs(Path.Combine(targetDir, Path.GetFileName(slide.FileName))); using var streamDoc = new OpenXmlMemoryStreamDocument(slide); using var slideDoc = streamDoc.GetPresentationDocument(new OpenSettings { AutoSave = false }); Assert.Equal(modified, slideDoc.PackageProperties.Modified); if (title.Equals(slideDoc.PackageProperties.Title)) { sameTitle++; } } Assert.InRange(sameTitle, 0, 4); }