Dim _doc As New C1WordDocument()
' add title
Dim titleFont As New Font("Tahoma", 24, RtfFontStyle.Bold)
Dim rcPage As Rect = WordUtils.PageRectangle(doc)
Dim rc As Rect = WordUtils.RenderParagraph(doc, doc.Info.Title, titleFont, rcPage, rcPage, False)
rc.Y += 12
' create nonsense document
Dim bkmk = New List()
Dim headerFont As New Font("Arial", 14, RtfFontStyle.Bold)
Dim bodyFont As New Font("Times New Roman", 11)
For i As Integer = 0 To 29
        ' create ith header (as a link target and outline entry)
        Dim header As String = String.Format("{0}. {1}", i + 1, BuildRandomTitle())
        rc = WordUtils.RenderParagraph(doc, header, headerFont, rcPage, rc, True, _
                True)
        ' save bookmark to build TOC later
        Dim pageNumber As Integer = doc.CurrentPage() + 1
        bkmk.Add(New String() {pageNumber.ToString(), header})
        ' create some text
        rc.X += 36
        rc.Width -= 36
        For j As Integer = 0 To 3 + (_rnd.[Next](20) - 1)
                Dim text As String = BuildRandomParagraph()
                rc = WordUtils.RenderParagraph(doc, text, bodyFont, rcPage, rc)
                rc.Y += 6
        Next
        rc.X -= 36
        rc.Width += 36
        rc.Y += 20
Next
' start Table of Contents
doc.PageBreak()
' start TOC on a new page
Dim tocPage As Integer = doc.CurrentPage()
' save page index (to move TOC later)
rc = WordUtils.RenderParagraph(doc, Strings.TableOfContentsDocumentTitle, titleFont, rcPage, rcPage, True)
rc.Y += 12
rc.X += 30
rc.Width -= 40
' render Table of Contents
Dim dottedPen As New Pen(Colors.Gray, 1.5F)
dottedPen.DashStyle = DashStyle.Dot
Dim sfRight As New StringFormat()
sfRight.Alignment = HorizontalAlignment.Right
rc.Height = bodyFont.Size * 1.2
For Each entry As String() In bkmk
        ' get bookmark info
        Dim page As String = entry(0)
        Dim header As String = entry(1)
        ' render header name and page number
        doc.DrawString(header, bodyFont, Colors.Black, rc)
        doc.DrawString(page, bodyFont, Colors.Black, rc, sfRight)
        ' add local hyperlink to entry
        doc.AddLink(Strings.PoundSign + header)
        ' move on to next entry
        rc = WordUtils.Offset(rc, 0, rc.Height)
        If rc.Bottom > rcPage.Bottom Then
                doc.PageBreak()
                rc.Y = rcPage.Y
        End If
Next