LargeDocument2.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing
'' 大規模な PDF ファイルを生成します。
'' このサンプルは StartEndDoc と同じですが、StartDoc/EndDoc メソッドを使用しません。
'' 消費メモリを増やすことになりますが、パフォーマンスが向上する可能性があります。
Public Class LargeDocument2
Function CreatePDF(ByVal stream As Stream) As Integer
'' 生成するページ数を設定します。
Const N = Util.LargeDocumentIterations
Dim start = Util.TimeNow()
Dim doc = New GcPdfDocument()
'' テキストを保持/書式設定するための TextLayout を準備します。
Dim tl = New TextLayout(72) With {
.MaxWidth = doc.PageSize.Width,
.MaxHeight = doc.PageSize.Height,
.MarginAll = 72,
.FirstLineIndent = 36
}
tl.DefaultFormat.Font = StandardFonts.Times
tl.DefaultFormat.FontSize = 12
'' ドキュメントを生成します。
For pageIdx = 1 To N
tl.Append(Util.getString_ja(1, 0, 1))
tl.PerformLayout(True)
doc.NewPage().Graphics.DrawTextLayout(tl, PointF.Empty)
tl.Clear()
Next
'' タイトルページを挿入します(StartDoc/EndDoc を使用している場合はできません)。
tl.FirstLineIndent = 0
Dim fnt = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "yumin.ttf"))
Dim tf0 = New TextFormat() With {.FontSize = 24, .FontBold = True, .Font = fnt}
tl.Append(String.Format("大規模なドキュメント" + vbLf + "{0} ページのテキストデータ" + vbLf + vbLf, N), tf0)
Dim tf1 = New TextFormat(tf0) With {.FontSize = 14, .FontItalic = True}
tl.Append(String.Format("生成日時 {0}、作成時間 {1:m\m\ s\s\ fff\m\s}", Util.TimeNow(), Util.TimeNow() - start), tf1)
tl.TextAlignment = TextAlignment.Center
tl.PerformLayout(True)
doc.Pages.Insert(0).Graphics.DrawTextLayout(tl, PointF.Empty)
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class