LinearizedPdf.vb
''
'' This code is part of GrapeCity Documents for PDF samples.
'' Copyright (c) GrapeCity, Inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text

'' Shows how to create a linearized PDF file.
'' Note that while the code below was used to generate the PDF shown in the sample browser,
'' the browser sends a static copy of this file, so that the web server can send it
'' in smaller chunks (all other sample PDFs are generated on the fly).
Public Class LinearizedPdf
    Sub CreatePDF(ByVal stream As Stream)
        '' Number of pages to generate:
        Dim N = 5000
        Dim doc = New GcPdfDocument()
        '' To create a linearized PDF, the only thing we need to do is raise a flag:
        doc.Linearized = True
        '' Prep a TextLayout to hold/format the text:
        Dim Page = doc.NewPage()
        Dim tl = Page.Graphics.CreateTextLayout()
        tl.DefaultFormat.Font = StandardFonts.Times
        tl.DefaultFormat.FontSize = 12
        '' Use TextLayout to layout the whole page including margins:
        tl.MaxHeight = Page.Size.Height
        tl.MaxWidth = Page.Size.Width
        tl.MarginAll = 72
        tl.FirstLineIndent = 72 / 2
        '' Generate the document:
        For pageIdx = 0 To N - 1
            '' Note: for the sake of this sample, we do not care if a sample text does not fit on a page.
            tl.Append(Util.LoremIpsum(2))
            tl.PerformLayout(True)
            doc.Pages.Last.Graphics.DrawTextLayout(tl, PointF.Empty)
            If (pageIdx < N - 1) Then
                doc.Pages.Add()
                tl.Clear()
            End If
        Next
        '' Done:
        doc.Save(stream)
    End Sub
End Class