JavaScriptAction.vb
'' 
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS 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(""はじめに"", "" - "", ""第 1 章""," + vbCrLf +
            "[ ""第 2 章"", ""第 2 章 第 1 節"", ""第 2 章 第 2 節""," + vbCrLf +
            """第 2 章 第 3 節""], "" - "", ""おわりに"");" + 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)
        '' 描画のためのテキスト形式を作成します。
        Dim tf = New TextFormat() With {.Font = Util.getFont(), .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