1

我在这方面完全是新手,并且从在线示例中借用了部分脚本。

我正在制作带有提示日期的对话框的邮票,如果没有回复,则默认为当前日期。我已经让它显示对话框和默认日期。但是,结果并没有最终印在邮票上。有人可以协助解决问题吗?

if(event.source.forReal && (event.source.stampName == "#2Nw2jMn7S5l9QIPW-WGOHB"))
{
   var rgEmpty = /^\s*$/;
   var cDate = null;
   var cDfltDate = null;
   if((event.value != null)  && !rgEmpty.test(event.value) && util.scand("mmm dd yyyy",event.value))
      cDfltDate = event.value;
   else
      cDfltDate = util.printd("mmm dd yyyy",new Date());
   while((cDate==null) || rgEmpty.test(cDate) || (null == util.scand("mmm dd yyyy",cDate)))
   {
       cDate = app.response({cQuestion:"Please Enter the Date",
                             cTitle:"Stamp Date Entry",
                             cDefault:cDfltDate ,
                             cLabel:"Date:"
                           });
       if((cDate==null) || rgEmpty.test(cDate) || (null == util.scand("mmm dd yyyy",cDate)))
       {
          app.alert("Please enter date as \"mmm dd yyyy\"\n\nEx: Apr 15 2020",1);
          if(cDate != null)
            cDfltDate = cDate;
       }
   }
}

另外,我想将最终印章作为模板分发给我的同事,而不是他们创建脚本。我可以分享邮票 pdf,让他们从我的模板中创建一个而无需修改脚本吗?

谢谢!

4

2 回答 2

0

谢谢!我能够在另一个线程的帮助下解决这个问题。这是那里的最后一篇文章:

有用!!!

日期必须是官方的,并且这种特定格式也是必需的。因此,我认为只需单击“确定”即可退出,因为它会自动给出默认日期。

最后要测试的是最终用户可以直接将其复制到邮票文件夹并开始使用它。我会在今天早上有人有空时进行测试并跟进。

谢谢您的帮助!

这是有效的代码:






        console.println("Stamping:" + event.source.StampName);

        if(event.source.forReal && (event.source.stampName == "#StampTemplate"))
        {
           var rgEmpty = /^\s*$/;
           var cDate = null;
           var cDfltDate = null;
           if((event.value != null)  && !rgEmpty.test(event.value) && util.scand("mmm dd yyyy",event.value))
              cDfltDate = event.value;
           else
              cDfltDate = util.printd("mmm dd yyyy",new Date());
           while((cDate==null) || rgEmpty.test(cDate) || (null == util.scand("mmm dd yyyy",cDate)))
           {
               cDate = app.response({cQuestion:"Please enter date as \"mmm dd yyyy\"\n\nFor Example: Apr 15 2020",
                                     cTitle:"Stamp Date Entry",
                                     cDefault:cDfltDate ,
                                     cLabel:"Date:"
                                   });
               if((cDate==null) || rgEmpty.test(cDate) || (null == util.scand("mmm dd yyyy",cDate)))
               {
                  app.alert("Please enter date as \"mmm dd yyyy\"\n\nFor Example: Apr 15 2020",1)
               }
               else
                  event.value = cDate;
               }
        }




于 2020-05-30T02:19:32.957 回答
0

首先看看以下内容;https://acrobatusers.com/tutorials/dynamic_stamp_secrets

1)你应该有一个单独的pdf文件,即stamp文件。如果他们将戳文件复制到正确的位置,则可以将此文件分发给您的同事,以找出正确的位置运行以下代码;

app.getPath ("app", "stamps");
app.getPath ("user", "stamps");

2)这个戳文件应该包含“字段”,这些字段可以由戳文件附带的脚本填写,因此您只需分发包含该脚本的戳文件。

3)在您的脚本中,如果这与某个字段相关联,则您没有声明event.value = ...;,它将用输入的日期或当前日期填写该字段。

希望这是一个帮助。

于 2020-05-29T06:49:20.210 回答