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