Adobe Acrobat Action Wizard JavaScript。创建TextFiled并使用当前日期更新TextField?

时间:2017-05-02 19:38:59

标签: javascript macros adobe acrobat

我正在使用操作向导对批量PDF文档执行一些突出显示。我还想在PDF文件的处理当天添加一个DATE STAMP(日期动作向导运行),我想我非常接近。

我可以创建所需的文本字段,但是我通过操作向导中的JavaScript代码将问题更新到文本字段当前日期。为什么这会创建字段,但不会向其添加日期?

var fld = this.getField("MacroDate");
if ( fld==null ) {
    var f = this.addField("info", "text", 0, [11,11, 61,26]);
    f.delay = true;
    f.alignment = "center";
    f.fillColor = color.white;
    f.lineWidth = 1;
    f.strokeColor = color.black;
    f.borderStyle = style.s;
    f.textSize = 14;
    f.textColor = color.black;
    f.textFont = font.Arial;
    f.defaultValue = "MacroDate";
    f.editable = false;
    f.multiline = false;
    f.doNotScroll = true;
    f.delay = false;
    var TodayDate = this.getField("MacroDate");
    TodayDate.value = util.printd("mm/dd/yyyy", new date());
}

在做了一些挖掘之后,我确实设法让它发挥作用:

我不确定它为什么会起作用,但如果有人想解释它,那么这里是代码:

var AcDate = new Date();
var AcDateFormat = "mm/dd/yyyy"

for (var p = 0; p < this.numPages; p++){

    var fd = this.addField("xftDate", "text", 0, [10, 10, 100, 25]);
    fd.value =  util.printd(AcDateFormat, AcDate);
    fd.textSize = 16;
    fd.readonly = true;
    fd.alignment = "right";
}
flattenPages();

2 个答案:

答案 0 :(得分:1)

只需快速浏览一下,问题就在最后一行:

TodayDate.value = util.printd("mm/dd/yyyy", new date());

在JavaScript中,资本化很重要。并且Date对象是大写的。因此:

TodayDate.value = util.printd("mm/dd/yyyy", new Date()) ;

您还应该激活控制台,如果发生错误,您将收到消息。

答案 1 :(得分:1)

您已经有一个变量来表示该字段,因此您可以使用它来设置该值。您可以使用以下内容简化它。

var fld = this.getField("MacroDate");
if ( fld = "undefined" ) {
    var f = this.addField("MacroDate", "text", 0, [11,11, (72*1.5)+11,26]);
    f.delay = true;
    f.alignment = "center";
    f.fillColor = color.white;
    f.lineWidth = 1;
    f.strokeColor = color.black;
    f.borderStyle = border.s;
    f.textSize = 14;
    f.textColor = color.black;
    f.textFont = font.Helv;
    f.readonly = false;
    f.multiline = false;
    f.doNotScroll = true;
    f.value = util.printd("mm/dd/yyyy", new Date());
    f.delay = false;
}