public static IEnumerable <ValidationErrorInfo> ValidateXml(OpenXmlPowerToolsDocument document) { if (document is WmlDocument) { using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(document)) using (WordprocessingDocument doc = streamDoc.GetWordprocessingDocument()) { OpenXmlValidator validator = new OpenXmlValidator(); return(validator.Validate(doc)); } } else if (document is SmlDocument) { using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(document)) using (SpreadsheetDocument doc = streamDoc.GetSpreadsheetDocument()) { OpenXmlValidator validator = new OpenXmlValidator(); return(validator.Validate(doc)); } } else if (document is PmlDocument) { using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(document)) using (PresentationDocument doc = streamDoc.GetPresentationDocument()) { OpenXmlValidator validator = new OpenXmlValidator(); return(validator.Validate(doc)); } } throw new PowerToolsDocumentException("Not an Open XML document."); }
public static IEnumerable <ValidationErrorInfo> GetOpenXmlValidationErrors(string fileName, string officeVersion) { #if !NET35 FileFormatVersions fileFormatVersion = FileFormatVersions.Office2013; #else FileFormatVersions fileFormatVersion = FileFormatVersions.Office2010; #endif try { fileFormatVersion = (FileFormatVersions)Enum.Parse(fileFormatVersion.GetType(), officeVersion); } catch (Exception) { #if !NET35 fileFormatVersion = FileFormatVersions.Office2013; #else fileFormatVersion = FileFormatVersions.Office2010; #endif } FileInfo fi = new FileInfo(fileName); if (Util.IsWordprocessingML(fi.Extension)) { WmlDocument wml = new WmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(wml)) using (WordprocessingDocument wDoc = streamDoc.GetWordprocessingDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return(errors.ToList()); } } else if (Util.IsSpreadsheetML(fi.Extension)) { SmlDocument Sml = new SmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(Sml)) using (SpreadsheetDocument wDoc = streamDoc.GetSpreadsheetDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return(errors.ToList()); } } else if (Util.IsPresentationML(fi.Extension)) { PmlDocument Pml = new PmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(Pml)) using (PresentationDocument wDoc = streamDoc.GetPresentationDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return(errors.ToList()); } } return(Enumerable.Empty <ValidationErrorInfo>()); }
public static PmlDocument SearchAndReplace(PmlDocument doc, string search, string replace, bool matchCase) { using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(doc)) { using (PresentationDocument document = streamDoc.GetPresentationDocument()) { SearchAndReplace(document, search, replace, matchCase); } return(streamDoc.GetModifiedPmlDocument()); } }
public static PmlDocument SearchAndReplace(PmlDocument doc, string search, string replace, bool matchCase) { using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(doc)) { using (PresentationDocument document = streamDoc.GetPresentationDocument()) { SearchAndReplace(document, search, replace, matchCase); } return streamDoc.GetModifiedPmlDocument(); } }
public static IEnumerable <ValidationErrorInfo> GetOpenXmlValidationErrors(string fileName, string officeVersion) { FileFormatVersions fileFormatVersion; if (!Enum.TryParse(officeVersion, out fileFormatVersion)) { fileFormatVersion = FileFormatVersions.Office2013; } FileInfo fi = new FileInfo(fileName); if (Util.IsWordprocessingML(fi.Extension)) { WmlDocument wml = new WmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(wml)) using (WordprocessingDocument wDoc = streamDoc.GetWordprocessingDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return(errors.ToList()); } } else if (Util.IsSpreadsheetML(fi.Extension)) { SmlDocument Sml = new SmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(Sml)) using (SpreadsheetDocument wDoc = streamDoc.GetSpreadsheetDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return(errors.ToList()); } } else if (Util.IsPresentationML(fi.Extension)) { PmlDocument Pml = new PmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(Pml)) using (PresentationDocument wDoc = streamDoc.GetPresentationDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return(errors.ToList()); } } return(Enumerable.Empty <ValidationErrorInfo>()); }
private static void BuildPresentation(List<SlideSource> sources, PresentationDocument output) { if (RelationshipMarkup == null) RelationshipMarkup = new Dictionary<XName, XName[]>() { { A.audioFile, new [] { R.link }}, { A.videoFile, new [] { R.link }}, { A.quickTimeFile, new [] { R.link }}, { A.wavAudioFile, new [] { R.embed }}, { A.blip, new [] { R.embed, R.link }}, { A.hlinkClick, new [] { R.id }}, { A.hlinkMouseOver, new [] { R.id }}, { A.hlinkHover, new [] { R.id }}, { A.relIds, new [] { R.cs, R.dm, R.lo, R.qs }}, { C.chart, new [] { R.id }}, { C.externalData, new [] { R.id }}, { C.userShapes, new [] { R.id }}, { DGM.relIds, new [] { R.cs, R.dm, R.lo, R.qs }}, { A14.imgLayer, new [] { R.embed }}, { P14.media, new [] { R.embed, R.link }}, { P.oleObj, new [] { R.id }}, { P.externalData, new [] { R.id }}, { P.control, new [] { R.id }}, { P.snd, new [] { R.embed }}, { P.sndTgt, new [] { R.embed }}, { PAV.srcMedia, new [] { R.embed, R.link }}, { P.contentPart, new [] { R.id }}, { VML.fill, new [] { R.id }}, { VML.imagedata, new [] { R.href, R.id, R.pict, O.relid }}, { VML.stroke, new [] { R.id }}, { WNE.toolbarData, new [] { R.id }}, { Plegacy.textdata, new [] { XName.Get("id") }}, }; List<ImageData> images = new List<ImageData>(); List<MediaData> mediaList = new List<MediaData>(); XDocument mainPart = output.PresentationPart.GetXDocument(); mainPart.Declaration.Standalone = "yes"; mainPart.Declaration.Encoding = "UTF-8"; output.PresentationPart.PutXDocument(); int sourceNum = 0; SlideMasterPart currentMasterPart = null; foreach (SlideSource source in sources) { using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(source.PmlDocument)) using (PresentationDocument doc = streamDoc.GetPresentationDocument()) { try { if (sourceNum == 0) CopyPresentationParts(doc, output, images, mediaList); currentMasterPart = AppendSlides(doc, output, source.Start, source.Count, source.KeepMaster, images, currentMasterPart, mediaList); } catch (PresentationBuilderInternalException dbie) { if (dbie.Message.Contains("{0}")) throw new PresentationBuilderException(string.Format(dbie.Message, sourceNum)); else throw dbie; } } sourceNum++; } foreach (var part in output.GetAllParts()) { if (part.ContentType == "application/vnd.openxmlformats-officedocument.presentationml.slide+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.theme+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.drawingml.chart+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml" || part.ContentType == "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml" || part.ContentType == "application/vnd.ms-office.drawingml.diagramDrawing+xml") { XDocument xd = part.GetXDocument(); xd.Descendants().Attributes("smtClean").Remove(); part.PutXDocument(); } else if (part.Annotation<XDocument>() != null) part.PutXDocument(); } }
static void Main(string[] args) { string presentation = "../../Presentation1.pptx"; string hiddenPresentation = "../../HiddenPresentation.pptx"; // First, load both presentations into byte arrays, simulating retrieving presentations from some source // such as a SharePoint server var baPresentation = File.ReadAllBytes(presentation); var baHiddenPresentation = File.ReadAllBytes(hiddenPresentation); // Next, replace "thee" with "the" in the main presentation var pmlMainPresentation = new PmlDocument("Main.pptx", baPresentation); PmlDocument modifiedMainPresentation = null; using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(pmlMainPresentation)) { using (PresentationDocument document = streamDoc.GetPresentationDocument()) { var pXDoc = document.PresentationPart.GetXDocument(); foreach (var slideId in pXDoc.Root.Elements(P.sldIdLst).Elements(P.sldId)) { var slideRelId = (string)slideId.Attribute(R.id); var slidePart = document.PresentationPart.GetPartById(slideRelId); var slideXDoc = slidePart.GetXDocument(); var paragraphs = slideXDoc.Descendants(A.p).ToList(); OpenXmlRegex.Replace(paragraphs, new Regex("thee"), "the", null); slidePart.PutXDocument(); } } modifiedMainPresentation = streamDoc.GetModifiedPmlDocument(); } // Combine the two presentations into a single presentation var slideSources = new List<SlideSource>() { new SlideSource(modifiedMainPresentation, 0, 1, true), new SlideSource(new PmlDocument("Hidden.pptx", baHiddenPresentation), true), new SlideSource(modifiedMainPresentation, 1, true), }; PmlDocument combinedPresentation = PresentationBuilder.BuildPresentation(slideSources); // Replace <# TRADEMARK #> with AdventureWorks (c) PmlDocument modifiedCombinedPresentation = null; using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(combinedPresentation)) { using (PresentationDocument document = streamDoc.GetPresentationDocument()) { var pXDoc = document.PresentationPart.GetXDocument(); foreach (var slideId in pXDoc.Root.Elements(P.sldIdLst).Elements(P.sldId).Skip(1).Take(1)) { var slideRelId = (string)slideId.Attribute(R.id); var slidePart = document.PresentationPart.GetPartById(slideRelId); var slideXDoc = slidePart.GetXDocument(); var paragraphs = slideXDoc.Descendants(A.p).ToList(); OpenXmlRegex.Replace(paragraphs, new Regex("<# TRADEMARK #>"), "AdventureWorks (c)", null); slidePart.PutXDocument(); } } modifiedCombinedPresentation = streamDoc.GetModifiedPmlDocument(); } // we now have a PmlDocument (which is essentially a byte array) that can be saved as necessary. modifiedCombinedPresentation.SaveAs("Modified.pptx"); }
public static IEnumerable<ValidationErrorInfo> GetOpenXmlValidationErrors(string fileName, string officeVersion) { #if !NET35 FileFormatVersions fileFormatVersion = FileFormatVersions.Office2013; #else FileFormatVersions fileFormatVersion = FileFormatVersions.Office2010; #endif try { fileFormatVersion = (FileFormatVersions)Enum.Parse(fileFormatVersion.GetType(), officeVersion); } catch (Exception) { #if !NET35 fileFormatVersion = FileFormatVersions.Office2013; #else fileFormatVersion = FileFormatVersions.Office2010; #endif } FileInfo fi = new FileInfo(fileName); if (Util.IsWordprocessingML(fi.Extension)) { WmlDocument wml = new WmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(wml)) using (WordprocessingDocument wDoc = streamDoc.GetWordprocessingDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return errors.ToList(); } } else if (Util.IsSpreadsheetML(fi.Extension)) { SmlDocument Sml = new SmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(Sml)) using (SpreadsheetDocument wDoc = streamDoc.GetSpreadsheetDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return errors.ToList(); } } else if (Util.IsPresentationML(fi.Extension)) { PmlDocument Pml = new PmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(Pml)) using (PresentationDocument wDoc = streamDoc.GetPresentationDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return errors.ToList(); } } return Enumerable.Empty<ValidationErrorInfo>(); }
public static XElement GetPptxMetrics(PmlDocument pmlDoc, MetricsGetterSettings settings) { using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(pmlDoc)) { using (PresentationDocument pDoc = streamDoc.GetPresentationDocument()) { List<XElement> metrics = new List<XElement>(); bool valid = ValidateAgainstSpecificVersion(pDoc, metrics, DocumentFormat.OpenXml.FileFormatVersions.Office2007, H.SdkValidationError2007); valid |= ValidateAgainstSpecificVersion(pDoc, metrics, DocumentFormat.OpenXml.FileFormatVersions.Office2010, H.SdkValidationError2010); #if !NET35 valid |= ValidateAgainstSpecificVersion(pDoc, metrics, DocumentFormat.OpenXml.FileFormatVersions.Office2013, H.SdkValidationError2013); #endif return new XElement(H.Metrics, new XAttribute(H.FileName, pmlDoc.FileName), new XAttribute(H.FileType, "PresentationML"), metrics); } } }
public static IEnumerable<ValidationErrorInfo> GetOpenXmlValidationErrors(string fileName, string officeVersion) { FileFormatVersions fileFormatVersion; if (!Enum.TryParse(officeVersion, out fileFormatVersion)) fileFormatVersion = FileFormatVersions.Office2013; FileInfo fi = new FileInfo(fileName); if (Util.IsWordprocessingML(fi.Extension)) { WmlDocument wml = new WmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(wml)) using (WordprocessingDocument wDoc = streamDoc.GetWordprocessingDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return errors.ToList(); } } else if (Util.IsSpreadsheetML(fi.Extension)) { SmlDocument Sml = new SmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(Sml)) using (SpreadsheetDocument wDoc = streamDoc.GetSpreadsheetDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return errors.ToList(); } } else if (Util.IsPresentationML(fi.Extension)) { PmlDocument Pml = new PmlDocument(fileName); using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(Pml)) using (PresentationDocument wDoc = streamDoc.GetPresentationDocument()) { OpenXmlValidator validator = new OpenXmlValidator(fileFormatVersion); var errors = validator.Validate(wDoc); return errors.ToList(); } } return Enumerable.Empty<ValidationErrorInfo>(); }