PDF JavaScript Does Not Work In Adobe Reader DC But All Other Readers
Solution 1:
Upon Inspection of your PDF document in the Adobe DC JavaScript debugger, I am afraid there are just a whole bunch of syntax errors thrown. When you fix one set of syntax errors, a whole new set of syntax errors pop up. From what I can tell (someone can hopefully confirm this) is that the JavaScript interpreters in the older versions of Adobe are less strict about how they interpret the language, which is why your forms are working in the older versions, but are getting stopped by the latest interpreters in Acrobat DC.
When I inspect the JavaScript that is throwing the errors, I am not only noticing that Adrobat DC really wants you to terminate your JavaScript statements with semicolons, (which your code does some of the time), but I am also finding very strange constructs, some that would leave me to believe that even though your forms are technically not throwing any errors in the older versions of Acrobat, you might find that the forms are not actually behaving properly in the older versions.
So, to fix these errors, and get your forms working in Adobe Acrobat DC, you would have to go clean up all the errors being thrown, which means migrating (updating) your coding style to comply with the new level of strictness in the Acrobat DC's runtime.
For example, when I first open your form using the JavaScript debugger in Acrobat DC, I get the following errors listed:
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
Notice how you have all these errors like:
SyntaxError: class is a reserved identifier SyntaxError: missing ; before statement
These are good indicators that the new JavaScript interpreter in DC is holding JS to a higher standard, and using newer language features, like the class
keyword, and imposing a convention that semicolons must be used to terminate statements.
When you continue clicking around the PDF, the JavaScript debugger starts complaining of even more errors in the same manner (missing semicolons, functions that are not defined, etc), so fixing one issue only reveals another rabbit's hole of additional, yet identical issues.
So I would say the fastest route to getting this form updated and ready for the latest version of DC, is to go through your scripts and apply some conventions or linting to start cleaning up the syntax (terminating all statements with semicolons, etc). Once you have cleaned up the syntax, the JavaScript interpreter is likely to start finding the function declarations that it couldn't find before (due to what it was considering an invalid syntax), which will (hopefully) clear up the "function not defined" errors.
Also, I would just do some general testing that your forms work the way you intend, because I am seeing strange JavaScript like this sample taken from the CreditCalc
function:
Notice that break between lines 123
and 125
? That's weird-looking JavaScript to my eyes, and from what I am seeing the code that sits in that "floating" object on line 125 is not ever going to get hit, it just exists, but won't ever serve a purpose, this should be scary to you.
Strange constructs like that are floating all over your scripts, along with other gotchas that could potentially result in unexpected behaviors, like using != 0
instead of !== 0
.
So I'm afraid there is no easy answer here, you will likely have to do a lot of cleanup before Acrobat DC lets you run this form.
Post a Comment for "PDF JavaScript Does Not Work In Adobe Reader DC But All Other Readers"