【问题标题】:PDF JavaScript does not work in Adobe Reader DC but all other ReadersPDF JavaScript 在 Adob​​e Reader DC 中不起作用,但在所有其他 Reader 中不起作用
【发布时间】:2017-07-11 06:49:44
【问题描述】:

我无法使用 Adob​​e Reader DC 让我的 pdf 在线工作。

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

所有按钮或功能都不起作用。 (就像当您单击汽车、移动房屋或顶部的任何这些按钮时,应该会出现下拉选项)但是如果我在任何其他阅读器中打开它,它就可以正常工作。有谁知道我如何能够编辑文档以在 Adob​​e Reader DC 中正常工作?文档中是否有任何设置或您必须更改的任何内容才能在 DC 中运行?

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

【问题讨论】:

  • 没有指向您的 pdf 的有效链接,这纯属猜测。
  • 人们经常使用公共 google drive 或 Dropbox 共享。
  • 您的文档已加密。请分享密码。
  • 也就是说,JavaScript 调试器抱怨SyntaxError: missing ; before statement 121:Document-Level:CreditCalcReferenceError: Loaded is not defined 5:Page:Open
  • @mkl 我不确定这意味着什么以及如何解决它?任何机会你都可以向我解释我对这一切都很陌生

标签: javascript pdf adobe adobe-reader


【解决方案1】:

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

当我检查引发错误的 JavaScript 时,我不仅注意到 Adrobat DC 确实希望您用分号终止 JavaScript 语句(您的代码有时会这样做),而且我还发现非常奇怪的结构,有些会让我相信,即使您的表单在技术上没有在旧版本的 Acrobat 中引发任何错误,您可能会发现这些表单在旧版本中实际上并没有正常运行。

因此,要修复这些错误并让您的表单在 Adob​​e Acrobat DC 中运行,您必须清理所有抛出的错误,这意味着迁移(更新)您的编码风格以符合新的严格级别在 Acrobat DC 的运行时中。

例如,当我第一次使用 Acrobat DC 中的 JavaScript 调试器打开您的表单时,我收到以下错误:

语法错误:缺少;声明之前 121:Document-Level:CreditCalcException in line 5 of function top_level, script Page-Actions:Page1:Page Open:Action4 ReferenceError:未定义加载 5:Page-Actions:Page1:Page Open:Action4Exception 在函数 top_level 的第 2 行,脚本 AcroForm:LoadCountyLock:Annot1:OnBlur:Action1 ReferenceError:未定义 FormNumber 2:AcroForm:LoadCountyLock:Annot1:OnBlur:Action1Exception in line 10 of function top_level, script AcroForm:ButtonMonth1.3.0:Annot1:MouseUp:Action2 ReferenceError:未定义 MonthsNumber 10:AcroForm:ButtonMonth1.3.0:Annot1:MouseUp:Action2Exception in line 10 of function top_level, script AcroForm:ButtonMonth1.0.0:Annot1:MouseUp:Action2 函数 top_level 第 10 行的异常,脚本 AcroForm:ButtonMonth1.1.0:Annot1:MouseUp:Action2 ReferenceError:未定义 MonthsNumber 10:AcroForm:ButtonMonth1.0.0:Annot1:MouseUp:Action2 语法错误:缺少;声明之前 121:文档级别:CreditCalc 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: 语法错误:缺少;声明之前 121: SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 77:AcroForm:DynolistHS:Annot1:MouseUp:Action2 SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56: SyntaxError:类是保留标识符 56: SyntaxError:类是保留标识符 56: SyntaxError:类是保留标识符 56: SyntaxError:类是保留标识符 56:文档级:SVCFees 语法错误:缺少;声明之前 121: SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 56:文档级:SVCFees SyntaxError:类是保留标识符 138:AcroForm:DynolistVehicle:Annot1:MouseUp:Action1

请注意您是如何遇到所有这些错误的,例如:

SyntaxError:类是保留标识符 语法错误:缺少;声明之前

这些很好地表明 DC 中的新 JavaScript 解释器将 JS 保持在更高的标准,并使用更新的语言功能,如 classkeyword,并强制规定必须使用分号来终止语句。

当您继续单击 PDF 时,JavaScript 调试器开始以相同的方式抱怨更多错误(缺少分号、未定义的函数等),因此修复一个问题只会揭示另一个兔子的额外漏洞,但相同的问题。

所以我想说更新此表单并为最新版本的 DC 做好准备的最快途径是检查您的脚本并应用一些约定或 linting 以开始清理语法(用分号终止所有语句等)。一旦你清理了语法,JavaScript 解释器很可能会开始查找它之前找不到的函数声明(由于它正在考虑无效的语法),这将(希望)清除“未定义的函数” " 错误。

另外,我会做一些一般性测试,以确保您的表单按照您的预期工作,因为我看到了奇怪的 JavaScript,例如取自 CreditCalc 函数的示例:

注意到123125 之间的换行了吗?在我看来,这看起来很奇怪,从我所看到的,位于第 125 行的“浮动”对象中的代码永远不会被击中,它只是存在,但永远不会起到任何作用,这个对你来说应该很可怕。

诸如此类的奇怪结构在您的脚本中随处可见,以及其他可能导致意外行为的陷阱,例如使用 != 0 而不是 !== 0

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2019-04-28
    • 2014-02-24
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多