public static void TransformToSingleCharacterRuns(WordprocessingDocument doc) { if (RevisionAccepter.HasTrackedRevisions(doc)) { throw new OpenXmlPowerToolsException( "Transforming a document to single character runs is not supported for " + "a document with tracked revisions."); } foreach (OpenXmlPart part in doc.ContentParts()) { TransformPartToSingleCharacterRuns(part); } }
public static void SearchAndReplace(WordprocessingDocument wordDoc, string search, string replace, bool matchCase) { if (RevisionAccepter.HasTrackedRevisions(wordDoc)) { throw new InvalidDataException( "Search and replace will not work with documents " + "that contain revision tracking."); } XDocument xDoc; xDoc = wordDoc.MainDocumentPart.DocumentSettingsPart.GetXDocument(); if (xDoc.Descendants(W.trackRevisions).Any()) { throw new InvalidDataException("Revision tracking is turned on for document."); } xDoc = wordDoc.MainDocumentPart.GetXDocument(); WmlSearchAndReplaceInXDocument(xDoc, search, replace, matchCase); wordDoc.MainDocumentPart.PutXDocument(); foreach (var part in wordDoc.MainDocumentPart.HeaderParts) { xDoc = part.GetXDocument(); WmlSearchAndReplaceInXDocument(xDoc, search, replace, matchCase); part.PutXDocument(); } foreach (var part in wordDoc.MainDocumentPart.FooterParts) { xDoc = part.GetXDocument(); WmlSearchAndReplaceInXDocument(xDoc, search, replace, matchCase); part.PutXDocument(); } if (wordDoc.MainDocumentPart.EndnotesPart != null) { xDoc = wordDoc.MainDocumentPart.EndnotesPart.GetXDocument(); WmlSearchAndReplaceInXDocument(xDoc, search, replace, matchCase); wordDoc.MainDocumentPart.EndnotesPart.PutXDocument(); } if (wordDoc.MainDocumentPart.FootnotesPart != null) { xDoc = wordDoc.MainDocumentPart.FootnotesPart.GetXDocument(); WmlSearchAndReplaceInXDocument(xDoc, search, replace, matchCase); wordDoc.MainDocumentPart.FootnotesPart.PutXDocument(); } }
public static WmlDocument AssembleDocument(WmlDocument templateDoc, XElement data, out bool templateError) { byte[] byteArray = templateDoc.DocumentByteArray; using (MemoryStream mem = new MemoryStream()) { mem.Write(byteArray, 0, (int)byteArray.Length); using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(mem, true)) { if (RevisionAccepter.HasTrackedRevisions(wordDoc)) { throw new OpenXmlPowerToolsException("Invalid DocumentAssembler template - contains tracked revisions"); } var te = new TemplateError(); foreach (var part in wordDoc.ContentParts()) { ProcessTemplatePart(data, te, part); } templateError = te.HasError; } WmlDocument assembledDocument = new WmlDocument("TempFileName.docx", mem.ToArray()); return(assembledDocument); } }