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

'' PDF アクションを JavaScript スクリプトに関連付ける方法を示します。
'' この例では、スクリプトはページ上のリンクに関連付けられています。 
'' JavaScript が一部の PDF ビューア(ビルトインブラウザビューアなど)では
'' 動作しないことに注意してください。
'' 詳細は Adobe「PDF へのアクションおよびスクリプトの適用」 を参照してください。
Public Class JavaScriptAction

    Const js =
            "var cChoice = app.popUpMenu(""はじめに"", "" 序章 "", ""第一章""," + vbCrLf +
            "[ ""第二章"", ""第二章 序盤"", ""第二章 中盤""," + vbCrLf +
            "[""第二章 終盤"", ""おわり""]]);" + vbCrLf +
            "app.alert(""メニューから '"" + cChoice + ""' を選択しました。"");"

    Function CreatePDF(ByVal stream As Stream) As Integer
        '' PDFドキュメントのオブジェクトを生成
        Dim doc = New GcPdfDocument()
        '' ページを追加し、描画するグラフィックスを取得します
        Dim g = doc.NewPage().Graphics
        '' アクションを作成します
        Dim jsAction = New ActionJavaScript(js)
        '' 「Hello World!」と描画するためのテキスト形式を作成します。
        Dim tf = New TextFormat() With {.Font = StandardFonts.Times, .FontSize = 14}
        '' 矩形内にリンク文字列を描画します。
        Dim text = "クリックすると、ポップアップメニューが表示されます。"
        Dim rect = New RectangleF(New PointF(72, 72), g.MeasureString(text, tf))
        g.FillRectangle(rect, Color.LightGoldenrodYellow)
        g.DrawString(text, tf, rect)
        Dim result = New LinkAnnotation(rect, jsAction)
        doc.Pages.Last.Annotations.Add(result)
        '' ブラウザで正しく表示できない可能性があることに関する警告文を追加します。
        Util.AddNote(
                "注意:JavaScriptは、組み込みのブラウザビューアなどの一部のPDFビューアでは動作しない場合があります。",
                doc.Pages.Last, New RectangleF(rect.X, rect.Bottom + 36, 400, 400))
        ''
        '' PDF ドキュメントを保存します。
        doc.Save(stream)
        Return doc.Pages.Count
    End Function
End Class