PageFieldOpts.vb
''
'' This code is part of Document Solutions for Word demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.Globalization
Imports GrapeCity.Documents.Word
Imports GrapeCity.Documents.Word.Fields

'' This sample shows how to use the PAGE and NUMPAGES field options
'' to insert the current and total page numbers into the document.
Public Class PageFieldOpts
    Function CreateDocx() As GcWordDocument
        Dim doc = New GcWordDocument()

        Dim pgOptHeader = New PageFieldOptions(doc)
        pgOptHeader.NumberStyle = NumberStyle.Decimal

        Dim pgOptBody = New PageFieldOptions(doc)
        pgOptBody.NumberStyle = NumberStyle.UpperRoman

        Dim numpagesOpt = New NumPagesFieldOptions(doc)
        numpagesOpt.NumberStyle = NumberStyle.Decimal

        Dim para = doc.Body.Sections.First.Headers(HeaderFooterType.Primary).Body.AddParagraph("Page header - page ")
        para.AddComplexField(pgOptHeader)
        para.AddRun(" of ")
        para.AddComplexField(numpagesOpt)

        Dim pageStyle = doc.Styles(BuiltInStyleId.IndexHeading)

        Dim rnd = Util.NewRandom()
        Dim i As Integer = 0
        Do While i < rnd.Next(6, 12)
            Dim p = doc.Body.AddParagraph("This text is on page ", pageStyle)
            p.AddComplexField(pgOptBody)
            p.AddRun(" of ")
            p.AddComplexField(numpagesOpt)
            p.GetRange().Runs.Add(".")
            Dim par = Util.LoremIpsumPar()
            doc.Body.AddParagraph(par)
            i += 1
        Loop

        doc.UpdateFields(New GrapeCity.Documents.Word.Layout.WordLayoutSettings() With {
            .FontCollection = Util.FontCollection,
            .Culture = CultureInfo.GetCultureInfo("en-US")
        })

        Return doc
    End Function
End Class