//
// This code is part of Document Solutions for PDF demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
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
{
// Shows how to associate a PDF action with a JavaScript script.
// In this example the script is associated with a link on a page.
// Note that JavaScript may not work in some PDF viewers (e.g. built-in browser viewers).
// See JavaScript for Acrobat for details.
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
};
// Draw the link string in a rectangle:
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);
// Add warning about this possibly not working in a browser:
Common.Util.AddNote(
"Note that JavaScript may not work in some PDF viewers such as built-in browser viewers.",
doc.Pages.Last, new RectangleF(rect.X, rect.Bottom + 36, 400, 400));
// Done:
doc.Save(stream);
return doc.Pages.Count;
}
}
}