【问题标题】:Acrobat PDF - How to generate unique number when document opens - only if field is blank - using Javascript?Acrobat PDF - 如何在文档打开时生成唯一编号 - 仅当字段为空白时 - 使用 Javascript?
【发布时间】:2017-02-28 04:47:06
【问题描述】:

我特地注册了这个问题。研究了很久,还是没有解决。

我有一个正在 Acrobat DC 中编辑的 PDF。在此 PDF 中,我有一个文本字段(只读),在打开 PDF 时需要填写一个唯一编号。我已经这样做了:

this.getField("Invoice No").value = util.printf("%06d", Math.floor((Math.random() * 1000000) + 1));

当我打开文件时,它会在正确的字段中生成一个数字,但是如果我保存它(或者如果我不保存它),然后关闭并再次打开它,它会生成一个新数字。

我对 JavaScript 完全没有经验,但我知道我缺少一些简单的代码。用简单的英语,我想要:

“在打开文档的情况下,将脚本应用于该字段 - 仅当该字段为空时”我希望这将避免每次打开已填充页面时填充它。用户将把它作为“主文件”打开,该字段将为空,但当他们打开它时,它会填充,他们将保存文件,然后有一个唯一的表单编号。

我希望我说得有道理。任何帮助都会很棒!

【问题讨论】:

    标签: javascript pdf adobe user-experience acrobat


    【解决方案1】:

    这可以通过测试该字段是否具有与其默认值相同的值来完成,如:

    if (this.getField("Invoice No").value == this.getField("Invoice No").defaultValue) {
    this.getField("Invoice No").value = util.printf("%06d", Math.floor((Math.random() * 1000000) + 1));
    }
    

    应该这样做。

    更新:如果对号码的唯一性有疑问,可以使用当前日期作为基准。可以这样做:

    var myInvNumber = new Date().getTime() ;
    

    由于这个数字很长,而且在过去有很长的时代(事实上,截至目前,37 年相当于毫秒),所以可以设置一个偏移量,对应于初始日期,然后从上面代码产生的数字。

    【讨论】:

    • 你知道是否有更好的方法来生成数字吗?我已经读过,最好基于毫秒的日期生成它,以避免重复数字的可能性。如果是这样,你知道怎么做吗?
    • 首先,您可能需要检查您的发票编号是否必须是数字,并且必须按升序排列(您可以询问您的会计师)。如果没有,您确实可以在 JavaScript(核心)中使用 Date 对象。再次,我将代码添加到我的答案中(因为它可以在那里格式化)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2011-05-07
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多