一旦在Adobe DC JavaScript調試器中檢查了您的PDF文檔,恐怕只會引發大量的語法錯誤。當您修復一組語法錯誤時,會彈出一整套全新的語法錯誤。根據我所能說的(有人可以證實這一點)是因爲舊版Adobe的JavaScript解釋器對於他們如何解釋語言的要求不那麼嚴格,這就是爲什麼你的表單在舊版本中工作,但卻被Acrobat DC中的最新口譯員。
當我檢查拋出錯誤的JavaScript時,我不僅注意到Adrobat DC確實希望你用分號終止你的JavaScript語句(你的代碼有時會這樣做),但我也發現非常奇怪的結構,有些讓我相信即使你的表單在技術上不會在舊版本的Acrobat中拋出任何錯誤,你也可能會發現這些表單在舊版本中實際上並不正確。
所以,要解決這些錯誤,並讓您的表單在Adobe Acrobat DC中工作,您必須清理所有引發的錯誤,這意味着要遷移(更新)您的編碼風格以符合新的級別Acrobat DC運行時嚴格。
例如,當我在Acrobat中使用DC JavaScript調試器首先打開你的形式,我可以上市了以下錯誤:
SyntaxError: missing ; before statement
121:Document-Level:CreditCalcException in line 5 of function top_level, script Page-Actions:Page1:Page Open:Action4
ReferenceError: Loaded is not defined
5:Page-Actions:Page1:Page Open:Action4Exception in line 2 of function top_level, script AcroForm:LoadCountyLock:Annot1:OnBlur:Action1
ReferenceError: FormNumber is not defined
2:AcroForm:LoadCountyLock:Annot1:OnBlur:Action1Exception in line 10 of function top_level, script AcroForm:ButtonMonth1.3.0:Annot1:MouseUp:Action2
ReferenceError: MonthsNumber is not defined
10:AcroForm:ButtonMonth1.3.0:Annot1:MouseUp:Action2Exception in line 10 of function top_level, script AcroForm:ButtonMonth1.0.0:Annot1:MouseUp:Action2
Exception in line 10 of function top_level, script AcroForm:ButtonMonth1.1.0:Annot1:MouseUp:Action2
ReferenceError: MonthsNumber is not defined
10:AcroForm:ButtonMonth1.0.0:Annot1:MouseUp:Action2
SyntaxError: missing ; before statement
121:Document-Level:CreditCalc
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: missing ; before statement
121:
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
77:AcroForm:DynolistHS:Annot1:MouseUp:Action2
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:
SyntaxError: class is a reserved identifier
56:
SyntaxError: class is a reserved identifier
56:
SyntaxError: class is a reserved identifier
56:
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: missing ; before statement
121:
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
56:Document-Level:SVCFees
SyntaxError: class is a reserved identifier
138:AcroForm:DynolistVehicle:Annot1:MouseUp:Action1
注意如何有所有這些錯誤,如:
SyntaxError: class is a reserved identifier
SyntaxError: missing ; before statement
這些都是很好的指標,DC中的新JavaScript解釋器將JS保持到更高的標準,並使用更新的語言特性就像關鍵字class
一樣,並強制使用分號必須使用分號來終止語句。
當你繼續點擊PDF時,JavaScript調試器會以相同的方式開始抱怨更多的錯誤(缺少分號,沒有定義的函數等),所以修復一個問題只會揭示另一個兔子的洞,但相同的問題。
所以我想說,獲取此表單的最新途徑已經更新並準備好用於最新版本的DC,即通過腳本並應用一些約定或linting來開始清理語法(用分號終止所有語句,等等)。一旦清理了語法,JavaScript解釋器很可能會開始查找以前找不到的函數聲明(由於它認爲語法無效),它將(希望)清除「未定義的函數「錯誤。
而且,我只想做你的形式工作,你打算順便一些常規的測試,因爲我看到了奇怪的JavaScript就像從CreditCalc
功能拍攝此示例:
注意之間打破行123
和125
?這看起來很奇怪,因爲我看到在125行中的「浮動」對象的代碼永遠不會被擊中,它只是存在,但永遠不會達到目的,這是應該對你很可怕。
像這樣的奇怪結構會遍佈整個腳本,以及可能導致意外行爲的其他陷阱,例如使用!= 0
而不是!== 0
。
因此,恐怕這裏沒有簡單的答案,在Acrobat DC允許您運行此表單之前,您可能需要進行大量清理。
沒有工作鏈接到您的pdf,這是純粹的猜測。 – mkl
通常人們使用公共谷歌驅動器或Dropbox股票。 – mkl
您的文檔已加密。請分享密碼。 – mkl