// test
AcroFields form = stamper.AcroFields;
var fields = form.Fields;
var fieldKeys = form.Fields.Keys;
foreach (string fieldKey in fieldKeys)
{
if (fieldKey.Contains("timeholder"))
{
float[] fieldPos = form.GetFieldPositions(fieldKey);
var fieldLlx = fieldPos[1];
var fieldLly = fieldPos[2];
var fieldUrx = fieldPos[3];
var fieldUry = fieldPos[4];
Rectangle recTime = new Rectangle(fieldLlx, fieldLly, fieldUrx,
fieldUry);
PushbuttonField btnTime = new PushbuttonField(stamper.Writer, recTime,
"post");
PdfAnnotation timeButton = btnTime.Field;
timeButton.Action = PdfAction.JavaScript(
"var date = this.getField(\"03 Time timeholder\"); date.value = new
Date().toLocaleTimeString();", stamper.Writer);
stamper.AddAnnotation(timeButton, 1);
}
}
以上代码工作正常,我的问题是如何使用fieldKey替换“03 Time timeholder”,以下是javascript的一段。
“var date = this.getField(\”03 Time timeholder \“); date.value = new Date()。toLocaleTimeString();”
提前致谢。托尼
所有你需要做的就是改变你初始化PdfAction
的JavaScript字符串:
timeButton.Action = PdfAction.JavaScript(
"var date = this.getField(\"" + fieldKey + "\"); date.value = new
Date().toLocaleTimeString();", stamper.Writer);
这就足够了,因为您为每个timeholder字段创建了一个单独的JavaScript scriptlet,因此字段名称可以在每个scriptlet中进行硬编码。
据我所知,这在PDF JavaScript事件处理程序中并不少见。