''
'' This code is part of Document Solutions for PDF demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Pdf.Structure
Imports GrapeCity.Documents.Pdf.MarkedContent
'' This sample shows how to create tagged (structured) PDF.
'' To see/explore the tags, open the document in Adobe Acrobat Pro and go to
'' View | Navigation Panels | Tags.
Public Class TagParagraphs
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Dim rnd = Util.NewRandom()
Dim pageCount = rnd.Next(3, 7)
'' Create Part element, it will contain P (paragraph) elements
Dim sePart = New StructElement("Part")
doc.StructTreeRoot.Children.Add(sePart)
'' Add some pages, on each page add some paragraphs and tag them:
For pageIndex = 0 To pageCount - 1
'' Add page:
Dim page = doc.Pages.Add()
Dim g = page.Graphics
Const margin = 36.0F
Const dy = 18.0F
'' Add some paragraphs:
Dim paraCount = rnd.Next(1, 5)
Dim y = margin
For i = 0 To paraCount - 1
'' Create paragraph element:
Dim seParagraph = New StructElement("P") With {.DefaultPage = page}
'' Add it to Part element:
sePart.Children.Add(seParagraph)
'' Create paragraph:
Dim tl = g.CreateTextLayout()
tl.DefaultFormat.Font = StandardFonts.Helvetica
tl.DefaultFormat.FontSize = 12
tl.Append(Util.LoremIpsum(1, 1, 5, 5, 10))
tl.MaxWidth = page.Size.Width
tl.MarginLeft = margin
tl.MarginRight = margin
tl.PerformLayout(True)
'' Draw TextLayout within tagged content:
g.BeginMarkedContent(New TagMcid("P", i))
g.DrawTextLayout(tl, New PointF(0, y))
g.EndMarkedContent()
y += tl.ContentHeight + dy
'' Add content item to paragraph StructElement:
seParagraph.ContentItems.Add(New McidContentItemLink(i))
Next
Next
'' Mark document as tagged:
doc.MarkInfo.Marked = True
''
'' Done:
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class