BuiltInDocumentPropertiesBytes Property

Represents an estimate of the number of bytes in the document.

Namespace:  Aspose.Words.Properties
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.3
Syntax
public int Bytes { get; set; }

Property Value

Type: Int32
Remarks

Microsoft Word does not always set this property.

Aspose.Words does not update this property.

Examples
Shows how to work with document properties in the "Content" category.
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;
}
See Also