TagParagraphs.vb
C# VB
'''' This code is part of Document Solutions for PDF .NET demos.'' Copyright (c) MESCIUS inc. All rights reserved.''Imports System.IOImports System.DrawingImports GrapeCity.Documents.PdfImports GrapeCity.Documents.Pdf.StructureImports 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 FunctionEnd Class