TagParagraphs.vb
'' 
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © 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

'' このサンプルは、タグ付き(構造化)PDFを作成する方法を示しています。
'' タグを表示/閲覧するには、Adobe Acrobat Pro でドキュメントを開き、
'' [表示]-[ナビゲーションパネル]-[タグ]に移動します。
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)

        '' Part 要素を作成します。これには P(段落)要素が含まれます。
        Dim sePart = New StructElement("Part")
        doc.StructTreeRoot.Children.Add(sePart)

        '' いくつかのページを追加し、各ページに段落を追加してタグ付けします。
        For pageIndex = 0 To pageCount - 1
            '' ページを追加します。
            Dim page = doc.Pages.Add()
            Dim g = page.Graphics
            Const margin = 36.0F
            Const dy = 18.0F
            '' いくつかの段落を追加します。
            Dim paraCount = rnd.Next(1, 5)
            Dim y = margin
            For i = 0 To paraCount - 1
                '' 段落要素を作成します。
                Dim seParagraph = New StructElement("P") With {.DefaultPage = page}
                '' Part 要素に追加します。
                sePart.Children.Add(seParagraph)
                '' 段落を作成します。
                Dim tl = g.CreateTextLayout()
                tl.DefaultFormat.Font = StandardFonts.Helvetica
                tl.DefaultFormat.FontSize = 12
                tl.Append(Util.getString_ja(1, 0, 1, 5, 10))
                tl.MaxWidth = page.Size.Width
                tl.MarginLeft = margin
                tl.MarginRight = margin
                tl.PerformLayout(True)
                '' タグ付きコンテンツ内に TextLayout を描画します。
                g.BeginMarkedContent(New TagMcid("P", i))
                g.DrawTextLayout(tl, New PointF(0, y))
                g.EndMarkedContent()
                y += tl.ContentHeight + dy
                '' 段落の StructElement にコンテンツ項目を追加します。
                seParagraph.ContentItems.Add(New McidContentItemLink(i))
            Next
        Next
        '' ドキュメントをタグ付きとしてマークします。
        doc.MarkInfo.Marked = True
        ''
        '' PDF ドキュメントを保存します。
        doc.Save(stream)
        Return doc.Pages.Count
    End Function
End Class