/// <summary> /// Add values in matrix row /// </summary> /// <param name="document">Represents a Word document to add matrix</param> /// <param name="mathMatrixRow">Represents a matrix row to add values</param> /// <param name="text">Represents a base text value for Subscript and Superscript equation</param> private void AddMatrixRowValues(WordDocument document, IOfficeMathMatrixRow mathMatrixRow, string text) { //Adds arguments for matrix row IOfficeMath officeMath = mathMatrixRow.Arguments[0]; //Adds a Subscript IOfficeMathScript mathScript = AddMathScript(officeMath, MathScriptType.Subscript); //Adds a math text IOfficeMathRunElement officeMathParaItem = AddMathText(document, mathScript.Equation, text); //Adds math text officeMathParaItem = AddMathText(document, mathScript.Script, "x"); //Adds arguments for matrix row officeMath = mathMatrixRow.Arguments[1]; //Adds a script mathScript = AddMathScript(officeMath, MathScriptType.Subscript); //Adds math text officeMathParaItem = AddMathText(document, mathScript.Equation, text); //Adds math text officeMathParaItem = AddMathText(document, mathScript.Script, "y"); //Adds arguments for matrix row officeMath = mathMatrixRow.Arguments[2]; //Adds a script mathScript = AddMathScript(officeMath, MathScriptType.Subscript); //Adds math text officeMathParaItem = AddMathText(document, mathScript.Equation, text); //Adds math text officeMathParaItem = AddMathText(document, mathScript.Script, "z"); }
/// <summary> /// Adds a math Subscript or Superscript equation /// </summary> private IOfficeMathScript AddMathScript(IOfficeMath officeMath, MathScriptType mathScriptType) { IOfficeMathScript mathScript = officeMath.Functions.Add(MathFunctionType.SubSuperscript) as IOfficeMathScript; //Sets the script type as Subscript or Superscript mathScript.ScriptType = mathScriptType; return(mathScript); }
public IActionResult EditEquation(string Button, string Group1) { if (Button == null) { return(View()); } string basePath = _hostingEnvironment.WebRootPath; string dataPath = basePath + @"/DocIO/Mathematical Equation.docx"; string contenttype = "application/vnd.ms-word.document.12"; // Load Template document stream. FileStream fileStream = new FileStream(dataPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); if (Button == "View Template") { return(File(fileStream, contenttype, "Mathematical Equation.docx")); } // Creates an empty Word document instance. WordDocument document = new WordDocument(); // Opens template document. document.Open(fileStream, FormatType.Docx); fileStream.Dispose(); fileStream = null; //Gets the last section in the document WSection section = document.LastSection; //Gets paragraph from Word document WParagraph paragraph = document.LastSection.Body.ChildEntities[3] as WParagraph; //Gets MathML from the paragraph WMath math = paragraph.ChildEntities[0] as WMath; //Gets the radical equation IOfficeMathRadical mathRadical = math.MathParagraph.Maths[0].Functions[1] as IOfficeMathRadical; //Gets the fraction equation in radical IOfficeMathFraction mathFraction = mathRadical.Equation.Functions[0] as IOfficeMathFraction; //Gets the n-array in fraction IOfficeMathNArray mathNAry = mathFraction.Numerator.Functions[0] as IOfficeMathNArray; //Gets the math script in n-array IOfficeMathScript mathScript = mathNAry.Equation.Functions[0] as IOfficeMathScript; //Gets the delimiter in math script IOfficeMathDelimiter mathDelimiter = mathScript.Equation.Functions[0] as IOfficeMathDelimiter; //Gets the math script in delimiter mathScript = mathDelimiter.Equation[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script IOfficeMathRunElement mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the math bar in delimiter IOfficeMathBar mathBar = mathDelimiter.Equation[0].Functions[2] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[6] as WParagraph; //Gets MathML from the paragraph math = paragraph.ChildEntities[0] as WMath; //Gets the math script equation mathScript = math.MathParagraph.Maths[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[7] as WParagraph; //Gets MathML from the paragraph WMath math2 = paragraph.ChildEntities[0] as WMath; //Gets bar equation mathBar = math2.MathParagraph.Maths[0].Functions[0] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Gets the math text (mathParaItem.Item as WTextRange).Text = "x"; string filename = ""; MemoryStream ms = new MemoryStream(); #region Document SaveOption if (Group1 == "WordDocx") { filename = "EditEquation.docx"; contenttype = "application/msword"; document.Save(ms, FormatType.Docx); } else { filename = "EditEquation.pdf"; contenttype = "application/pdf"; DocIORenderer renderer = new DocIORenderer(); renderer.ConvertToPDF(document).Save(ms); } #endregion Document SaveOption document.Close(); ms.Position = 0; return(File(ms, contenttype, filename)); }
/// <summary> /// Creates an expansion of Gamma function /// </summary> /// <param name="paragraph">Represents a paragraph to add MathML element</param> private void CreateGammaFunction(IWParagraph paragraph) { WordDocument document = paragraph.Document; //Creates a new MathML element WMath math = paragraph.AppendMath(); //Adds a math text IOfficeMath officeMath = math.MathParagraph.Maths.Add(); //Unicode value of capital gamma string capitalGamma = "\u0393"; IOfficeMathRunElement officeMathParaItem = AddMathText(document, officeMath, capitalGamma); //Sets MathML style format for the text officeMathParaItem.MathFormat.Style = MathStyleType.Regular; //Adds a delimiter equation IOfficeMathDelimiter mathDelimiter = math.MathParagraph.Maths.Add().Functions.Add(MathFunctionType.Delimiter) as IOfficeMathDelimiter; //Adds a equation to the delimiter officeMath = mathDelimiter.Equation.Add(); //Adds a math text officeMathParaItem = AddMathText(document, officeMath, "z"); //Adds a math text officeMath = math.MathParagraph.Maths.Add(); officeMathParaItem = AddMathText(document, officeMath, "="); //Adds an n array element IOfficeMathNArray mathNAry = math.MathParagraph.Maths.Add().Functions.Add(MathFunctionType.NArray) as IOfficeMathNArray; //Adds a math text AddMathText(document, mathNAry.Subscript, "0"); //Adds a math text string infinitySymbol = "\u221E"; AddMathText(document, mathNAry.Superscript, infinitySymbol); //Adds a math superscript IOfficeMathScript mathScript = AddMathScript(mathNAry.Equation, MathScriptType.Superscript); //Adds a math text for Superscript AddMathText(document, mathScript.Equation, "t"); AddMathText(document, mathScript.Script, "z-1"); //Adds a Superscript mathScript = AddMathScript(mathNAry.Equation, MathScriptType.Superscript); AddMathText(document, mathScript.Equation, "e"); AddMathText(document, mathScript.Script, "-t"); //Adds a math text in n Array equation AddMathText(document, mathNAry.Equation, "dt"); //Adds a math text AddMathText(document, math.MathParagraph.Maths.Add(), "="); //Adds a fraction equation IOfficeMathFraction mathFraction = math.MathParagraph.Maths.Add().Functions.Add(MathFunctionType.Fraction) as IOfficeMathFraction; //Adds a math script mathScript = AddMathScript(mathFraction.Numerator, MathScriptType.Superscript); //Adds a math text for Superscript AddMathText(document, mathScript.Equation, "e"); AddMathText(document, mathScript.Script, "-"); //Unicode of small gamma string smallGamma = "\u03B3"; AddMathText(document, mathScript.Script, smallGamma); AddMathText(document, mathScript.Script, "z"); //Adds a math text for denominator AddMathText(document, mathFraction.Denominator, "z"); //Adds an n-array element mathNAry = math.MathParagraph.Maths.Add().Functions.Add(MathFunctionType.NArray) as IOfficeMathNArray; //Unicode value of n-array product string symbol = "\u220F"; //Adds a n-array character mathNAry.NArrayCharacter = symbol; //Adds a math text AddMathText(document, mathNAry.Subscript, "k=1"); //Adds a math text AddMathText(document, mathNAry.Superscript, infinitySymbol); //Adds a math script mathScript = AddMathScript(mathNAry.Equation, MathScriptType.Superscript); //Adds a math delimiter element mathDelimiter = mathScript.Equation.Functions.Add(MathFunctionType.Delimiter) as IOfficeMathDelimiter; //Adds a equation to the delimiter equation collection officeMath = mathDelimiter.Equation.Add(); //Adds a math text AddMathText(document, officeMath, "1+"); //Adds a fraction element mathFraction = officeMath.Functions.Add(MathFunctionType.Fraction) as IOfficeMathFraction; //Adds a math text for numerator AddMathText(document, mathFraction.Numerator, "z"); //Adds a math text for denominator AddMathText(document, mathFraction.Denominator, "k"); //Adds a math text AddMathText(document, mathScript.Script, "-1"); //Adds a Superscript equation mathScript = AddMathScript(mathNAry.Equation, MathScriptType.Superscript); //Adds a math text for Superscript AddMathText(document, mathScript.Equation, "e"); AddMathText(document, mathScript.Script, "z"); officeMathParaItem = AddMathText(document, mathScript.Script, "/"); officeMathParaItem.MathFormat.HasLiteral = true; AddMathText(document, mathScript.Script, "k"); //Adds a math text AddMathText(document, math.MathParagraph.Maths.Add(), ","); //Adds a math text officeMathParaItem = AddMathText(document, math.MathParagraph.Maths.Add(), " "); //Sets style for math text officeMathParaItem.MathFormat.Style = MathStyleType.Regular; //Adds a math text AddMathText(document, math.MathParagraph.Maths.Add(), smallGamma); string text = "\u2248" + "0.577216"; AddMathText(document, math.MathParagraph.Maths.Add(), text); }
/// <summary> /// Creates a Fourier series equation /// </summary> /// <param name="paragraph">Represents a paragraph to add MathML element</param> private void CreateFourierseries(IWParagraph paragraph) { WordDocument document = paragraph.Document; //Creates a new MathML element WMath math = paragraph.AppendMath(); //Adds a math IOfficeMath officeMath = math.MathParagraph.Maths.Add(); //Adds a math text AddMathText(document, officeMath, "f"); //Adds a math delimiter IOfficeMathDelimiter mathDelimiter = math.MathParagraph.Maths.Add().Functions.Add(MathFunctionType.Delimiter) as IOfficeMathDelimiter; //Adds a math in the delimiter officeMath = mathDelimiter.Equation.Add() as IOfficeMath; //Adds a math text AddMathText(document, officeMath, "x"); AddMathText(document, math.MathParagraph.Maths.Add(), "="); //Adds a Subscript equation IOfficeMathScript mathScript = AddMathScript(math.MathParagraph.Maths.Add(), MathScriptType.Subscript); //Adds a math text AddMathText(document, mathScript.Equation, "a"); AddMathText(document, mathScript.Script, "0"); //Adds a math text AddMathText(document, math.MathParagraph.Maths.Add(), "+"); //Adds a math n-array IOfficeMathNArray mathNAry = math.MathParagraph.Maths.Add().Functions.Add(MathFunctionType.NArray) as IOfficeMathNArray; //Unicode value of n-array summation string sigma = "\u2211"; //Sets the value as the n-array character mathNAry.NArrayCharacter = sigma; mathNAry.HasGrow = true; //Adds a math text AddMathText(document, mathNAry.Subscript, "n=1"); //Adds a math text string infinitySymbol = "\u221E"; AddMathText(document, mathNAry.Superscript, infinitySymbol); //Adds a math delimiter mathDelimiter = mathNAry.Equation.Functions.Add(MathFunctionType.Delimiter) as IOfficeMathDelimiter; //Adds an math in the delimiter equation collection officeMath = mathDelimiter.Equation.Add() as IOfficeMath; //Adds a math script mathScript = AddMathScript(officeMath, MathScriptType.Subscript); //Adds a math text AddMathText(document, mathScript.Equation, "a"); //Adds a math text AddMathText(document, mathScript.Script, "n"); //Adds a math function IOfficeMathFunction mathFunction = officeMath.Functions.Add(MathFunctionType.Function) as IOfficeMathFunction; //Adds a math text IOfficeMathRunElement mathParaItem = AddMathText(document, mathFunction.FunctionName, "cos"); mathParaItem.MathFormat.Style = MathStyleType.Regular; //Adds a math fraction IOfficeMathFraction mathFraction = mathFunction.Equation.Functions.Add(MathFunctionType.Fraction) as IOfficeMathFraction; //Adds a math text //Unicode value of PI string pi = "\uD835\uDF0B"; string text = "n" + pi + "x"; AddMathText(document, mathFraction.Numerator, text); AddMathText(document, mathFraction.Denominator, "L"); //Adds a math text AddMathText(document, officeMath, "+"); //Adds a math script mathScript = AddMathScript(officeMath, MathScriptType.Subscript); //Adds a math text AddMathText(document, mathScript.Equation, "b"); AddMathText(document, mathScript.Script, "n"); //Adds a function mathFunction = officeMath.Functions.Add(MathFunctionType.Function) as IOfficeMathFunction; //Adds a math text mathParaItem = AddMathText(document, mathFunction.FunctionName, "sin"); mathParaItem.MathFormat.Style = MathStyleType.Regular; //Adds a math fraction element mathFraction = mathFunction.Equation.Functions.Add(MathFunctionType.Fraction) as IOfficeMathFraction; //Adds a math text for numerator AddMathText(document, mathFraction.Numerator, text); //Adds a math text for denominator AddMathText(document, mathFraction.Denominator, "L"); }
/// <summary> /// Creates an equation with sum to the power of N /// </summary> /// <param name="paragraph">Represents a paragraph to add MathML element</param> private void CreateSumToThePowerOfN(IWParagraph paragraph) { WordDocument document = paragraph.Document; //Creates a new MathML element WMath math = paragraph.AppendMath(); IOfficeMath officeMath = math.MathParagraph.Maths.Add(); //Adds a math script element IOfficeMathScript mathScript = AddMathScript(officeMath, MathScriptType.Superscript); #region Delimiter equation //Adds a delimiter IOfficeMathDelimiter mathDelimiter = mathScript.Equation.Functions.Add(MathFunctionType.Delimiter) as IOfficeMathDelimiter; //Adds an office math in the delimiter officeMath = mathDelimiter.Equation.Add() as IOfficeMath; //Adds a math text IOfficeMathRunElement mathParaItem = AddMathText(document, officeMath, "1+x"); //Adds a math text mathParaItem = AddMathText(document, mathScript.Script, "n"); #endregion //Adds a math text officeMath = math.MathParagraph.Maths.Add(1); mathParaItem = AddMathText(document, officeMath, "=1+"); #region Fraction equation //Adds a math fraction IOfficeMathFraction mathFraction = math.MathParagraph.Maths.Add().Functions.Add(MathFunctionType.Fraction) as IOfficeMathFraction; //Adds a numerator text AddMathText(document, mathFraction.Numerator, "nx"); //Adds a denominator text AddMathText(document, mathFraction.Denominator, "1!"); #endregion //Adds a math text officeMath = math.MathParagraph.Maths.Add(); mathParaItem = AddMathText(document, officeMath, "+"); #region Fraction equation //Adds a math fraction mathFraction = math.MathParagraph.Maths.Add().Functions.Add(MathFunctionType.Fraction) as IOfficeMathFraction; #region Numerator //Adds a numerator text AddMathText(document, mathFraction.Numerator, "n"); //Adds a delimiter mathDelimiter = mathFraction.Numerator.Functions.Add(MathFunctionType.Delimiter) as IOfficeMathDelimiter; //Adds a math text for delimiter officeMath = mathDelimiter.Equation.Add() as IOfficeMath; AddMathText(document, officeMath, "n-1"); //Adds a math script mathScript = mathFraction.Numerator.Functions.Add(MathFunctionType.SubSuperscript) as IOfficeMathScript; //Adds a math text for Superscript AddMathText(document, mathScript.Equation, "x"); AddMathText(document, mathScript.Script, "2"); #endregion #region Denominator //Adds a math text for denominator AddMathText(document, mathFraction.Denominator, "2!"); #endregion #endregion //Adds a math text officeMath = math.MathParagraph.Maths.Add(); AddMathText(document, officeMath, "+..."); }
public MemoryStream EditEquation(string documentType) { string basePath = @"wwwroot/"; string dataPath = basePath + @"data/docio/mathematical-equation.docx"; FileStream fileStream = new FileStream(dataPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); // Creates an empty Word document instance WordDocument document = new WordDocument(); // Opens template document document.Open(fileStream, FormatType.Docx); fileStream.Dispose(); fileStream = null; //Gets the last section in the document WSection section = document.LastSection; //Gets paragraph from Word document WParagraph paragraph = document.LastSection.Body.ChildEntities[3] as WParagraph; //Gets MathML from the paragraph WMath math = paragraph.ChildEntities[0] as WMath; //Gets the radical equation IOfficeMathRadical mathRadical = math.MathParagraph.Maths[0].Functions[1] as IOfficeMathRadical; //Gets the fraction equation in radical IOfficeMathFraction mathFraction = mathRadical.Equation.Functions[0] as IOfficeMathFraction; //Gets the n-array in fraction IOfficeMathNArray mathNAry = mathFraction.Numerator.Functions[0] as IOfficeMathNArray; //Gets the math script in n-array IOfficeMathScript mathScript = mathNAry.Equation.Functions[0] as IOfficeMathScript; //Gets the delimiter in math script IOfficeMathDelimiter mathDelimiter = mathScript.Equation.Functions[0] as IOfficeMathDelimiter; //Gets the math script in delimiter mathScript = mathDelimiter.Equation[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script IOfficeMathRunElement mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the math bar in delimiter IOfficeMathBar mathBar = mathDelimiter.Equation[0].Functions[2] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[6] as WParagraph; //Gets MathML from the paragraph math = paragraph.ChildEntities[0] as WMath; //Gets the math script equation mathScript = math.MathParagraph.Maths[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[7] as WParagraph; //Gets MathML from the paragraph WMath math2 = paragraph.ChildEntities[0] as WMath; //Gets bar equation mathBar = math2.MathParagraph.Maths[0].Functions[0] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Gets the math text (mathParaItem.Item as WTextRange).Text = "x"; FormatType type = FormatType.Docx; //Save as .pdf format if (documentType == "PDF") { DocIORenderer render = new DocIORenderer(); // Converts Word document into PDF document. PdfDocument pdf = render.ConvertToPDF(document); //Save the document as a stream and retrun the stream using (MemoryStream stream = new MemoryStream()) { //Save the created PDF document to MemoryStream pdf.Save(stream); render.Dispose(); pdf.Close(); document.Close(); stream.Position = 0; return(stream); } } else { using (MemoryStream stream = new MemoryStream()) { //Save the created Word document to MemoryStream document.Save(stream, type); document.Close(); stream.Position = 0; return(stream); } } }
private void button1_Click(object sender, System.EventArgs e) { try { // Get XML file path. string dataPath = Application.StartupPath + @"..\..\..\..\..\..\..\..\Common\Data\DocIO\"; //Opens an existing Word document WordDocument document = new WordDocument(dataPath + "Mathematical Equation.docx"); //Gets the last section in the document WSection section = document.LastSection; //Gets paragraph from Word document WParagraph paragraph = document.LastSection.Body.ChildEntities[3] as WParagraph; //Gets MathML from the paragraph WMath math = paragraph.ChildEntities[0] as WMath; //Gets the radical equation IOfficeMathRadical mathRadical = math.MathParagraph.Maths[0].Functions[1] as IOfficeMathRadical; //Gets the fraction equation in radical IOfficeMathFraction mathFraction = mathRadical.Equation.Functions[0] as IOfficeMathFraction; //Gets the n-array in fraction IOfficeMathNArray mathNAry = mathFraction.Numerator.Functions[0] as IOfficeMathNArray; //Gets the math script in n-array IOfficeMathScript mathScript = mathNAry.Equation.Functions[0] as IOfficeMathScript; //Gets the delimiter in math script IOfficeMathDelimiter mathDelimiter = mathScript.Equation.Functions[0] as IOfficeMathDelimiter; //Gets the math script in delimiter mathScript = mathDelimiter.Equation[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script IOfficeMathRunElement mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the math bar in delimiter IOfficeMathBar mathBar = mathDelimiter.Equation[0].Functions[2] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[6] as WParagraph; //Gets MathML from the paragraph math = paragraph.ChildEntities[0] as WMath; //Gets the math script equation mathScript = math.MathParagraph.Maths[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[7] as WParagraph; //Gets MathML from the paragraph WMath math2 = paragraph.ChildEntities[0] as WMath; //Gets bar equation mathBar = math2.MathParagraph.Maths[0].Functions[0] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Gets the math text (mathParaItem.Item as WTextRange).Text = "x"; //Saving the document as .docx document.Save("Sample.docx", FormatType.Docx); document.Close(); //Message box confirmation to view the created document. if (MessageBoxAdv.Show("Do you want to view the generated Word document?", "Document has been created", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { try { //Launching the MS Word file using the default Application.[MS Word Or Free WordViewer] #if NETCORE System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo = new System.Diagnostics.ProcessStartInfo("Sample.docx") { UseShellExecute = true }; process.Start(); #else System.Diagnostics.Process.Start("Sample.docx"); #endif //Exit this.Close(); } catch (Win32Exception ex) { MessageBoxAdv.Show("Microsoft Word Viewer or Microsoft Word is not installed in this system"); Console.WriteLine(ex.ToString()); } } else { // Exit this.Close(); } } catch (Exception Ex) { MessageBox.Show(Ex.Message); } }
public ActionResult EditEquation(string Button) { if (Button == null) { return(View()); } //Opens an existing Word document WordDocument document = new WordDocument(ResolveApplicationDataPath("Mathematical Equation.docx", "Data\\DocIO")); //Gets the last section in the document WSection section = document.LastSection; //Gets paragraph from Word document WParagraph paragraph = document.LastSection.Body.ChildEntities[3] as WParagraph; //Gets MathML from the paragraph WMath math = paragraph.ChildEntities[0] as WMath; //Gets the radical equation IOfficeMathRadical mathRadical = math.MathParagraph.Maths[0].Functions[1] as IOfficeMathRadical; //Gets the fraction equation in radical IOfficeMathFraction mathFraction = mathRadical.Equation.Functions[0] as IOfficeMathFraction; //Gets the n-array in fraction IOfficeMathNArray mathNAry = mathFraction.Numerator.Functions[0] as IOfficeMathNArray; //Gets the math script in n-array IOfficeMathScript mathScript = mathNAry.Equation.Functions[0] as IOfficeMathScript; //Gets the delimiter in math script IOfficeMathDelimiter mathDelimiter = mathScript.Equation.Functions[0] as IOfficeMathDelimiter; //Gets the math script in delimiter mathScript = mathDelimiter.Equation[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script IOfficeMathRunElement mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the math bar in delimiter IOfficeMathBar mathBar = mathDelimiter.Equation[0].Functions[2] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[6] as WParagraph; //Gets MathML from the paragraph math = paragraph.ChildEntities[0] as WMath; //Gets the math script equation mathScript = math.MathParagraph.Maths[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[7] as WParagraph; //Gets MathML from the paragraph WMath math2 = paragraph.ChildEntities[0] as WMath; //Gets bar equation mathBar = math2.MathParagraph.Maths[0].Functions[0] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Gets the math text (mathParaItem.Item as WTextRange).Text = "x"; return(document.ExportAsActionResult("Sample.docx", FormatType.Docx, HttpContext.ApplicationInstance.Response, HttpContentDisposition.Attachment)); }
public ActionResult EditEquation(string Button, string Group1) { if (Button == null) { return(View()); } if (Button == "View Template") { return(new TemplateResult("Mathematical Equation.docx", ResolveApplicationDataPath("Data\\DocIO"), HttpContext.ApplicationInstance.Response)); } //Opens an existing Word document WordDocument document = new WordDocument(ResolveApplicationDataPath("Mathematical Equation.docx", "Data\\DocIO")); //Gets the last section in the document WSection section = document.LastSection; //Gets paragraph from Word document WParagraph paragraph = document.LastSection.Body.ChildEntities[3] as WParagraph; //Gets MathML from the paragraph WMath math = paragraph.ChildEntities[0] as WMath; //Gets the radical equation IOfficeMathRadical mathRadical = math.MathParagraph.Maths[0].Functions[1] as IOfficeMathRadical; //Gets the fraction equation in radical IOfficeMathFraction mathFraction = mathRadical.Equation.Functions[0] as IOfficeMathFraction; //Gets the n-array in fraction IOfficeMathNArray mathNAry = mathFraction.Numerator.Functions[0] as IOfficeMathNArray; //Gets the math script in n-array IOfficeMathScript mathScript = mathNAry.Equation.Functions[0] as IOfficeMathScript; //Gets the delimiter in math script IOfficeMathDelimiter mathDelimiter = mathScript.Equation.Functions[0] as IOfficeMathDelimiter; //Gets the math script in delimiter mathScript = mathDelimiter.Equation[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script IOfficeMathRunElement mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the math bar in delimiter IOfficeMathBar mathBar = mathDelimiter.Equation[0].Functions[2] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[6] as WParagraph; //Gets MathML from the paragraph math = paragraph.ChildEntities[0] as WMath; //Gets the math script equation mathScript = math.MathParagraph.Maths[0].Functions[0] as IOfficeMathScript; //Gets the math run element in math script mathParaItem = mathScript.Equation.Functions[0] as IOfficeMathRunElement; //Modifies the math text value (mathParaItem.Item as WTextRange).Text = "x"; //Gets the paragraph from Word document paragraph = document.LastSection.Body.ChildEntities[7] as WParagraph; //Gets MathML from the paragraph WMath math2 = paragraph.ChildEntities[0] as WMath; //Gets bar equation mathBar = math2.MathParagraph.Maths[0].Functions[0] as IOfficeMathBar; //Gets the math run element in bar mathParaItem = mathBar.Equation.Functions[0] as IOfficeMathRunElement; //Gets the math text (mathParaItem.Item as WTextRange).Text = "x"; //Save as .docx format if (Group1 == "WordDocx") { return(document.ExportAsActionResult("EditEquation.docx", FormatType.Docx, HttpContext.ApplicationInstance.Response, HttpContentDisposition.Attachment)); } //Save as .pdf format else if (Group1 == "Pdf") { DocToPDFConverter converter = new DocToPDFConverter(); PdfDocument pdfDoc = converter.ConvertToPDF(document); document.Close(); converter.Dispose(); return(pdfDoc.ExportAsActionResult("EditEquation.pdf", HttpContext.ApplicationInstance.Response, HttpReadType.Save)); } return(View()); }