BuiltInDocumentPropertiesLines Property |
Namespace: Aspose.Words.Properties
Aspose.Words updates this property when you call UpdateWordCount(Boolean).
public void Content() { // Open a document with a couple paragraphs of content Document doc = new Document(MyDir + "Paragraphs.docx"); // The properties we will work with are members of the BuiltInDocumentProperties attribute BuiltInDocumentProperties properties = doc.BuiltInDocumentProperties; // By using built in properties, // we can treat document statistics such as word/page/character counts as metadata that can be glanced at without opening the document // These properties are accessed by right-clicking the file in Windows Explorer and navigating to Properties > Details > Content // If we want to display this data inside the document, we can use fields such as NUMPAGES, NUMWORDS, NUMCHARS etc. // Also, these values can also be viewed in Microsoft Word by navigating File > Properties > Advanced Properties > Statistics // Page count: The PageCount attribute shows the page count in real time and its value can be assigned to the Pages property properties.Pages = doc.PageCount; Assert.AreEqual(6, properties.Pages); // Word count: The UpdateWordCount() automatically assigns the real time word/character counts to the respective built in properties doc.UpdateWordCount(); Assert.AreEqual(1035, properties.Words); Assert.AreEqual(6026, properties.Characters); Assert.AreEqual(7041, properties.CharactersWithSpaces); // Line count: Count the lines in a document and assign value to the Lines property LineCounter lineCounter = new LineCounter(doc); properties.Lines = lineCounter.GetLineCount(); Assert.AreEqual(142, properties.Lines); // Paragraph count: Assign the size of the count of child Paragraph-nodes to the Paragraphs built in property properties.Paragraphs = doc.GetChildNodes(NodeType.Paragraph, true).Count; Assert.AreEqual(29, properties.Paragraphs); // Check the real file size of our document Assert.AreEqual(20310, properties.Bytes); // Template: The Template attribute can reflect the filename of the attached template document doc.AttachedTemplate = MyDir + "Busniess brochure.dotx"; Assert.AreEqual("Normal", properties.Template); properties.Template = doc.AttachedTemplate; // Content status: This is a descriptive field properties.ContentStatus = "Draft"; // Content type: Upon saving, any value we assign to this field will be overwritten by the MIME type of the output save format Assert.AreEqual("", properties.ContentType); // If the document contains links and they are all up to date, we can set this to true Assert.False(properties.LinksUpToDate); doc.Save(ArtifactsDir + "Properties.Content.docx"); } /// <summary> /// Util class that counts the lines in a document. /// Upon construction, traverses the document's layout entities tree, /// counting entities of the "Line" type that also contain real text. /// </summary> private class LineCounter { public LineCounter(Document doc) { mLayoutEnumerator = new LayoutEnumerator(doc); CountLines(); } public int GetLineCount() { return mLineCount; } private void CountLines() { do { if (mLayoutEnumerator.Type == LayoutEntityType.Line) { mScanningLineForRealText = true; } if (mLayoutEnumerator.MoveFirstChild()) { if (mScanningLineForRealText && mLayoutEnumerator.Kind.StartsWith("TEXT")) { mLineCount++; mScanningLineForRealText = false; } CountLines(); mLayoutEnumerator.MoveParent(); } } while (mLayoutEnumerator.MoveNext()); } private readonly LayoutEnumerator mLayoutEnumerator; private int mLineCount; private bool mScanningLineForRealText; }