'' 完毕:
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing
'' 此示例演示如何防止段落之间出现分页符
'' 以及拆分 TextLayout 时的下一个。
'' 此示例中文本的 @Splitting 与 @{PaginatedText} 中的类似,
'' see comments in PaginatedText 以获取有关文本处理的更多信息。
Public Class KeepWithNext
Function CreatePDF(ByVal stream As Stream) As Integer
Const NPAR = 40
Dim doc = New GcPdfDocument()
Dim tl = New TextLayout(72) With
{
.FirstLineIndent = 72 / 2,
.MaxWidth = doc.PageSize.Width,
.MaxHeight = doc.PageSize.Height,
.MarginAll = 72
}
tl.DefaultFormat.Font = StandardFonts.Times
tl.DefaultFormat.FontSize = 12
'' 与下一个段落放在一起的文本格式:
Dim tf = New TextFormat(tl.DefaultFormat) With
{
.FontSize = tl.DefaultFormat.FontSize + 2,
.FontBold = True
}
'' 我们在本文档中添加了一些随机的“lorem ipsum”段落,
'' 在每个段落之前添加一个“标题”,并将其放在一起
'' 带有以下“lorem ipsum”段落:
For i = 0 To NPAR - 1
'' “标题”与下一段保持在一起:
tl.Append("标题与下一段保持在一起。", tf)
'' AppendParagraphBreak 添加段落分隔符,但防止两个段落之间出现分页符:
tl.AppendParagraphBreak()
'' “标题”后的随机段落:
tl.Append(Util.LoremIpsum(1))
Next
tl.PerformLayout(True)
'' 我们强制所有段落行保持在同一页上,
'' 这使得“标题”和以下段落更加明显
'' 保存在同一页面上:
Dim tso = New TextSplitOptions(tl) With
{
.KeepParagraphLinesTogether = True
}
'' 在循环中,分割并渲染文本:
While (True)
'' 'rest' 将接受不适合的文本:
Dim rest As TextLayout = Nothing
Dim splitResult = tl.Split(tso, rest)
doc.Pages.Add().Graphics.DrawTextLayout(tl, PointF.Empty)
If (splitResult <> SplitResult.Split) Then
Exit While
End If
tl = rest
End While
'' 完毕:
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class