PDF JavaScript 不适用于 Adob​​e Reader DC 但所有其他 Readers

PDF JavaScript does not work in Adobe Reader DC but all other Readers

我无法使我的 pdf 与 Adob​​e Reader DC 联机工作。

http://www.okeechobeecountytaxcollector.com/Documents/FeeCalculatorRev0909.pdf

None 个按钮或功能正常。 (就像当你点击机动车、移动房屋或顶部的任何这些按钮时,应该会出现一个下拉选项)但是如果我打开任何其他 reader 它工作正常。有谁知道我如何能够编辑文档以在 Adob​​e Reader DC 中正常工作?文档中是否有任何设置或您必须更改任何内容才能在 DC 中工作?

我已尝试将安全部分中的设置更改为 Acrobat X 及更高版本,但也没有解决问题。

在 Adob​​e DC JavaScript 调试器中检查您的 PDF 文档后,恐怕会抛出一大堆语法错误。当您修复一组语法错误时,会弹出一组全新的语法错误。据我所知(希望有人能证实这一点),旧版本 Adob​​e 中的 JavaScript 解释器对他们如何解释语言的解释不那么严格,这就是为什么你的表单在旧版本中工作的原因,但是正在被 Acrobat DC 中的最新解释器阻止。

当我检查抛出错误的 JavaScript 时,我不仅注意到 Adrobat DC 确实希望您用分号终止 JavaScript 语句,(您的代码做了一些时间),但我也发现了非常奇怪的构造,有些让我相信即使您的表单在技术上不会在旧版本的 Acrobat 中抛出任何错误,您可能会发现这些表单实际上在旧版本。

因此,要修复这些错误并让您的表单在 Adob​​e 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 以开始清理语法(以分号终止所有语句, ETC)。一旦你清理了语法,JavaScript 解释器可能会开始寻找它之前找不到的函数声明(由于它正在考虑无效的语法),这将(希望)清除"function not defined" 个错误。

此外,我会做一些一般性测试,以确保您的表单按您预期的方式工作,因为我看到奇怪的 JavaScript 就像这个取自 CreditCalc 函数的示例:

注意到 123125 行之间的中断了吗?在我看来,这看起来很奇怪 JavaScript,从我所看到的情况来看,位于第 125 行 "floating" 对象中的代码永远不会受到攻击,它只是存在,但不会永远服务于一个目的,这对你来说应该是可怕的。

像这样的奇怪构造在您的脚本中随处可见,还有其他可能导致意外行为的问题,例如使用 != 0 而不是 !== 0

恐怕这里没有简单的答案,在 Acrobat DC 让您 运行 此表单之前,您可能需要做大量清理工作。