当前位置: 首页 > 知识库问答 >
问题:

PDF JavaScript不能在Adobe Reader DC中工作,但也不能在所有其他阅读器中工作

徐飞尘
2023-03-14

我无法使我的pdf与Adobe Reader DC联机工作。

http://www.okeechobeecountytaxcollector.com/documents/feecalculatorrev0909.pdf

所有按钮或功能都不工作。(就像当你点击机动车辆、移动房屋或上面的任何一个按钮时,应该会出现一个下拉选项)但如果我在任何其他阅读器中打开,它都能正常工作。有没有人知道我怎样才能编辑文档使其在Adobe Reader DC中正常工作?文档中是否有任何设置或任何您必须更改的东西,以便在DC中工作?

我已经尝试将安全部分的设置更改为Acrobat X和更高版本,但这并不能修复它。

共有1个答案

江煜
2023-03-14

在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调试器开始以同样的方式抱怨更多的错误(缺少分号、未定义的函数等),因此修复一个问题只会暴露出另一个Rabbit漏洞中的其他问题,但也是相同的问题。

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

此外,我还将做一些常规测试,以确保表单按照您的预期方式工作,因为我看到了一些奇怪的JavaScript,比如这个从creditcalc函数中提取的示例:

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

类似这样奇怪的构造在您的脚本中到处飘浮,还有其他可能导致意外行为的gotchas,比如使用!=0而不是!==0

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

 类似资料:
  • 我一直在努力克服Boot_complete接收器不能在某些设备中工作的问题。 比如Vivo设备,它们有iManager应用程序和自动启动管理器。用户可以在设备启动时从自动启动切换应用程序。 我应该使用什么连同下面的意图过滤器重新启动我的服务后,设备重新启动。

  • 几天来,我一直在用头撞这个,完全被难倒了。下面是纲要: 我有一个Eclipse插件项目,使用Tycho通过Maven 3构建 在Maven中,我已经设置了maven-jarsigner-plugin来使用我的keystore对jars进行签名(有关keystore的详细信息,请参阅下文) 我的密钥库里有个Thawte签名的代码签名证书 我可以从目标/*中获取任何签名的jar文件,并在上面运行“ja

  • 我试图做一个文件上传到一个链接(共享点Rest服务),在chrome浏览器中工作良好,但不是在android WebView。 我知道android webview有很多限制,但我尝试使用以下方法上传一个文件 https://github.com/mgks/os-fileup 它打开浏览器,但它不显示文件名,也不上传任何内容或调用服务,但同样的代码在chrome浏览器中运行良好(请注意,我已经启用

  • 问题内容: 已解决:问题是Wingware Python IDE。我想现在自然而然的问题是,这是怎么可能的以及如何解决。 昨天我问了一个问题Python中的multiprocessing.Pool问题,这个问题几乎相同,但是我发现它似乎可以在Windows计算机上运行,​​而不能在我的Ubuntu上运行。在本文的结尾,我将发布执行相同功能的代码的稍有不同的版本。 我的问题的简短摘要:在Python

  • 我在请求库时遇到一个非常奇怪的错误。当我运行时: 在控制台中它工作正常,但是当我运行脚本时: 我收到一个错误,它找不到相关模块utils(相信它的email.utils) 所有其他模块都正常加载。此外,只是在py