' calculate page rect (discounting margins)
Dim rcPage As Rect = WordUtils.PageRectangle(word)
Dim rc As Rect = rcPage
' initialize output parameters
Dim hdrFont As New Font("Arial", 14, RtfFontStyle.Bold)
Dim titleFont As New Font("Arial", 24, RtfFontStyle.Bold)
Dim txtFont As New Font("Times New Roman", 10, RtfFontStyle.Italic)
' add title
rc = WordUtils.RenderParagraph(word, word.Info.Title, titleFont, rcPage, rc)
' build document
For Each s As String In GetQuotes()
Dim authorQuote As String() = s.Split(ControlChars.Tab)
' render header (author)
Dim author = authorQuote(0)
rc.Y += 20
rc = WordUtils.RenderParagraph(word, author, hdrFont, rcPage, rc, True)
' render body text (quote)
Dim text As String = authorQuote(1)
rc.X = rcPage.X + 36
' << indent body text by 1/2 inch
rc.Width = rcPage.Width - 40
rc = WordUtils.RenderParagraph(word, text, txtFont, rcPage, rc)
rc.X = rcPage.X
' << restore indent
rc.Width = rcPage.Width ' << add 12pt spacing after each quote
rc.Y += 12
Next
Private Shared Function GetQuotes() As List
Dim list = New List()
Using sr = New StreamReader(GetType(BasicTextPage).GetTypeInfo().Assembly.
GetManifestResourceStream("WordSamples.Resources.quotes.txt"))
Dim quotes = sr.ReadToEnd()
For Each quote As String In quotes.Split("*"C)
Dim pos As Integer = quote.IndexOf(vbCr & vbLf)
If pos > -1 Then
Dim q = String.Format("{0}" & vbTab & "{1}", quote.Substring(0, pos),
quote.Substring(pos + 2).Trim())
list.Add(q)
End If
Next
End Using
Return list
End Function