Below code works fine and print the paragraph... we are able to get style and para text
But when we display the paragraph, it looses formatting. How can we retain formatting in below mentioned code
Section where we r printing text
foreach (var p in paraWithText) { Response.Write(p.StyleName + " -" + p.Text); }
Output comes like this:
Heading2 -Financial definitions
BodyText -In this Agreement:
ListAlpha2 -moneys borrowed and debit balances at banks or other financial institutions;
ListAlpha2 -any acceptances under any acceptance credit or bill discount facility (or dematerialised equivalent);
ListAlpha2 -any note purchase facility or the issue of bonds
ListAlpha2 -any Finance Lease;
See full code below
const string fileName = @"D:\DocFiles\Scan.docx"; const string documentRelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; const string stylesRelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"; const string wordmlNamespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"; XNamespace w = wordmlNamespace; XDocument xDoc = null; XDocument styleDoc = null; using (Package wdPackage = Package.Open(fileName, FileMode.Open, FileAccess.Read)) { PackageRelationship docPackageRelationship = wdPackage .GetRelationshipsByType(documentRelationshipType) .FirstOrDefault(); if (docPackageRelationship != null) { Uri documentUri = PackUriHelper .ResolvePartUri( new Uri("/", UriKind.Relative), docPackageRelationship.TargetUri); PackagePart documentPart = wdPackage.GetPart(documentUri); // Load the document XML in the part into an XDocument instance. xDoc = XDocument.Load(XmlReader.Create(documentPart.GetStream())); // Find the styles part. There will only be one. PackageRelationship styleRelation = documentPart.GetRelationshipsByType(stylesRelationshipType) .FirstOrDefault(); if (styleRelation != null) { Uri styleUri = PackUriHelper.ResolvePartUri(documentUri, styleRelation.TargetUri); PackagePart stylePart = wdPackage.GetPart(styleUri); // Load the style XML in the part into an XDocument instance. styleDoc = XDocument.Load(XmlReader.Create(stylePart.GetStream())); } } } string defaultStyle = (string)( from style in styleDoc.Root.Elements(w + "style") where (string)style.Attribute(w + "type") == "paragraph" && (string)style.Attribute(w + "default") == "1" select style ).First().Attribute(w + "styleId"); // Find all paragraphs in the document. var paragraphs = from para in xDoc .Root .Element(w + "body") .Descendants(w + "p") let styleNode = para .Elements(w + "pPr") .Elements(w + "pStyle") .FirstOrDefault() select new { ParagraphNode = para, StyleName = styleNode != null ? (string)styleNode.Attribute(w + "val") : defaultStyle }; // Retrieve the text of each paragraph. var paraWithText = from para in paragraphs select new { ParagraphNode = para.ParagraphNode, StyleName = para.StyleName, Text = ParagraphText(para.ParagraphNode) }; foreach (var p in paraWithText) { Response.Write(p.StyleName + " -" + p.Text); }