2017-02-28 104 views
0

我已經註冊專門問這個問題。花了很長時間研究並沒有解決這個問題。Acrobat PDF - 如何在文檔打開時生成唯一編號 - 僅當字段爲空時 - 使用Javascript?

我在Acrobat DC中編輯了PDF。在此PDF中,我有一個文本字段(只讀),打開PDF時需要填寫一個唯一編號。我已經做到了這一點使用:

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

當我打開文件時,它產生在正確的領域的一些,但是如果我保存它(或者,如果我沒有),然後關閉並重新打開它,它產生一個新號碼。

我沒有經驗的JavaScript,但我知道有一個簡單的代碼我失蹤了。用普通英語,我想:

「如果文檔被打開,將腳本應用到字段 - 只有當字段爲空時」我希望這會避免每次頁面打開時填充它當已經填充時。用戶將打開它作爲'主文件',其中該字段將是空的,但是當它打開時它將填充,他們將保存該文件,然後具有唯一的表單編號。

我希望我有道理。任何幫助將是驚人的!

回答

0

這可以通過測試字段是否具有相同的值作爲它的默認值,如做:

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值得毫秒),一個可以設置的偏移,對應於一個初始日期,並從上述代碼產生的數字中減去它。

+0

謝謝!那已經做到了! –

+0

你知道是否有更好的方法來產生數字?我讀過它可能更好地生成基於日期的毫秒,以避免重複數字的可能性。如果是這樣,你會知道該怎麼做嗎? –

+0

首先,您可能需要檢查規定您的發票號碼是否必須是數字,並且必須是升序(您可以向您的會計師諮詢)。如果沒有,你確實可以在JavaScript中使用Date對象(核心)。再次,我將代碼添加到我的答案中(因爲它可以在那裏格式化)。 –

相關問題