将onMouseOver javascript添加到TextField

时间:2013-09-20 10:51:48

标签: c# javascript itextsharp textfield

我想将JavaScript添加到使用iTextSharp创建的PDF中的文本字段吗?

我尝试过以下代码:

TextField field = new iTextSharp.text.pdf.TextField(writer, new iTextSharp.text.Rectangle(x, y - h, x + w, y), name);
field.BackgroundColor = new BaseColor(bgcolor[0], bgcolor[1], bgcolor[2]);
field.BorderColor = new BaseColor(bordercolor[0], bordercolor[1], bordercolor[2]);
field.BorderWidth = border;
field.BorderStyle = PdfBorderDictionary.STYLE_SOLID;
field.Text = text;

// PROBLEM:
//field.AddJavaScript = PdfAction.JavaScript("this.getField(\"Total_0\").value = ( this.getField(\"Quantity_0\").value * this.getField(\"Price_0\").value ) / this.getField(\"Multiplier_0\").value;", writer);

writer.AddAnnotation(field.GetTextField());

问题是:

iTextSharp.text.pdf.TextField不包含AddJavaScript的定义。

那么我如何添加当鼠标光标位于文本字段上或文本字段已被编辑时激活的JavaScript?我的目的是使用Javascript基于其他文本字段的值计算值。

1 个答案:

答案 0 :(得分:1)

您正在寻找的内容称为附加操作。例如:您有一个条目操作,使用PdfName.E定义,退出操作,由PdfName.X定义。当鼠标进入定义字段的矩形时,将触发输入操作;当鼠标存在定义字段的矩形时,将触发退出操作。

在您的代码中,您正在跳过一个步骤,这可能就是您找不到所需功能的原因:

PdfFormField ffield = field.GetTextField();
ffield.SetAdditionalActions(PdfName.E, PdfAction("app.alert('action!')"));
writer.AddAnnotation(ffield);

当鼠标进入文本字段时,此代码段将显示警告。其他选项包括PdfName.D(mouseDown),PdfName.U(mouseUp),PdfName.K(用户按键),PdfName.V(验证,因为字段的值已更改),等