FindAndSquiggly.vb
'' 
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
'' 
Imports System
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Pdf.Annotations
Imports GrapeCity.Documents.Common

'' このサンプルでは、PDF ドキュメント内のフレーズをすべて検索し、検索結果すべてを
'' テキストマークアップ注釈の波状下線を使用して強調表示する方法を紹介しています。
'' 単語が改行で区切られていても、フレーズ「javascript framework」がすべて検索できるように、
'' 検索文字列に正規表現を使用しています。
Public Class FindAndSquiggly
    Public Function CreatePDF(stream As Stream) As Integer
        '' PDF を読み込みます。
        Dim doc As New GcPdfDocument()
        Using fs = File.OpenRead(Path.Combine("Resources", "PDFs", "CompleteJavaScriptBook.pdf"))
            doc.Load(fs)

            '' 改行で区切られても検索できるように、正規表現を使用して
            '' フレーズ「javascript framework」をすべて検索します。
            Dim ft As New FindTextParams("javascript\s+framework", False, False, , , , True)
            Dim found = doc.FindText(ft, Nothing)

            '' テキストマークアップ注釈を追加し、検索結果すべてに波状下線を引きます。
            For Each f In found
                Dim markup As New TextMarkupAnnotation() With {
                        .Page = doc.Pages(f.PageIndex),
                        .MarkupType = TextMarkupType.Squiggly,
                        .Color = Color.Magenta
                    }
                Dim area As List(Of Quadrilateral) = New List(Of Quadrilateral)
                For Each b In f.Bounds
                    area.Add(b)
                Next
                markup.Area = area
            Next

            '' PDF ドキュメントを保存します。
            doc.Save(stream)
            Return doc.Pages.Count
        End Using
    End Function
End Class