如何将参数传递给PdfAction.JavaScript(jscode,stapmer.Writer)

问题描述 投票:0回答:1
// 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();”

提前致谢。托尼

javascript c# itext
1个回答
1
投票

所有你需要做的就是改变你初始化PdfAction的JavaScript字符串:

timeButton.Action = PdfAction.JavaScript(
    "var date = this.getField(\"" + fieldKey + "\"); date.value = new 
    Date().toLocaleTimeString();", stamper.Writer);

这就足够了,因为您为每个timeholder字段创建了一个单独的JavaScript scriptlet,因此字段名称可以在每个scriptlet中进行硬编码。

据我所知,这在PDF JavaScript事件处理程序中并不少见。

© www.soinside.com 2019 - 2024. All rights reserved.