JavaScriptAction.cs
// 完毕:
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Pdf.Annotations;
using GrapeCity.Documents.Pdf.Actions;

namespace DsPdfWeb.Demos.Basics
{
    // 演示如何将 PDF 操作与 JavaScript 脚本关联。
    // 在此示例中,脚本与页面上的链接相关联。
    // 请注意,JavaScript 可能无法在某些 PDF 查看器(例如内置浏览器查看器)中运行。
    // 请参考 将动作和脚本应用于 PDF
    public class JavaScriptAction
    {
        const string js =
            "var cChoice = app.popUpMenu(\"Introduction\", \" - \", \"Chapter 1\",\r\n" +
            "[ \"Chapter 2\", \"Chapter 2 Start\", \"Chapter 2 Middle\",\r\n" +
            "[\"Chapter 2 End\", \"The End\"]]);\r\n" +
            "app.alert(\"You chose the '\" + cChoice + \"' menu item\");";

        public int CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            var g = doc.NewPage().Graphics;
            var jsAction = new ActionJavaScript(js);
            var tf = new TextFormat()
            {
                Font = StandardFonts.Times,
                FontSize = 14
            };
            // 在矩形中绘制链接字符串:
            var text = "Click this to show the popup menu.";
            var rect = new RectangleF(new PointF(72, 72), g.MeasureString(text, tf));
            g.FillRectangle(rect, Color.LightGoldenrodYellow);
            g.DrawString(text, tf, rect);
            var result = new LinkAnnotation(rect, jsAction);
            doc.Pages.Last.Annotations.Add(result);
            // 添加有关这可能无法在浏览器中运行的警告:
            Common.Util.AddNote(
                "请注意,JavaScript 可能无法在某些 PDF 查看器(例如内置浏览器查看器)中运行。",
                doc.Pages.Last, new RectangleF(rect.X, rect.Bottom + 36, 400, 400));
            // 完毕:
            doc.Save(stream);
            return doc.Pages.Count;
        }
    }
}